Python 3.x flask socketIO应用程序,带有gunicorn和eventlet,在AWS Elastic beanstalk上运行
在开发模式下,我的应用程序在没有gunicorn和eventlet的情况下运行良好。 使用命令:Python 3.x flask socketIO应用程序,带有gunicorn和eventlet,在AWS Elastic beanstalk上运行,python-3.x,flask,socket.io,gunicorn,eventlet,Python 3.x,Flask,Socket.io,Gunicorn,Eventlet,在开发模式下,我的应用程序在没有gunicorn和eventlet的情况下运行良好。 使用命令:python3application.py一切运行正常。 当我使用gunicorn--worker class eventlet-w 1 application:application运行应用程序时,有些函数根本不起作用。该应用程序仍然可以正常工作,但我无法调用AWS服务、使用SMTP库发送电子邮件或使用请求库等。这些问题仅在eventlet/gunicorn中出现,而在socketio.run(应用
python3application.py
一切运行正常。
当我使用gunicorn--worker class eventlet-w 1 application:application
运行应用程序时,有些函数根本不起作用。该应用程序仍然可以正常工作,但我无法调用AWS服务、使用SMTP库发送电子邮件或使用请求库等。这些问题仅在eventlet/gunicorn中出现,而在socketio.run(应用程序)
中不会出现
当我使用gunicorn--worker class eventlet-w 1 application:application运行我的应用程序时,我得到:
Traceback (most recent call last):
File "/usr/local/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/geventlet.py", line 99, in init_process
super().init_process()
File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 119, in init_process
self.load_wsgi()
File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 144, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 49, in load
return self.load_wsgiapp()
File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 39, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 358, in import_app
mod = importlib.import_module(module)
File "/usr/lib64/python3.6/importlib/__init__.py", line 126, in import_module
return _bootstrap._gcd_import(name[level:], package, level)
File "<frozen importlib._bootstrap>", line 994, in _gcd_import
File "<frozen importlib._bootstrap>", line 971, in _find_and_load
File "<frozen importlib._bootstrap>", line 955, in _find_and_load_unlocked
File "<frozen importlib._bootstrap>", line 665, in _load_unlocked
File "<frozen importlib._bootstrap_external>", line 678, in exec_module
File "<frozen importlib._bootstrap>", line 219, in _call_with_frames_removed
File "/home/ec2-user/environment/cognito/application.py", line 15, in <module>
JWKS = requests.get(JWKS_URL).json()["keys"]
File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.6/site-packages/requests/adapters.py", line 440, in send
timeout=timeout
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 601, in urlopen
chunked=chunked)
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 346, in _make_request
self._validate_conn(conn)
File "/usr/local/lib/python3.6/site-packages/urllib3/connectionpool.py", line 850, in _validate_conn
conn.connect()
File "/usr/local/lib/python3.6/site-packages/urllib3/connection.py", line 314, in connect
cert_reqs=resolve_cert_reqs(self.cert_reqs),
File "/usr/local/lib/python3.6/site-packages/urllib3/util/ssl_.py", line 269, in create_urllib3_context
context.options |= options
File "/usr/lib64/python3.6/ssl.py", line 465, in options
super(SSLContext, SSLContext).options.__set__(self, value)
File "/usr/lib64/python3.6/ssl.py", line 465, in options
super(SSLContext, SSLContext).options.__set__(self, value)
File "/usr/lib64/python3.6/ssl.py", line 465, in options
super(SSLContext, SSLContext).options.__set__(self, value)
[Previous line repeated 317 more times]
RecursionError: maximum recursion depth exceeded while calling a Python object
没有gunicorn/eventlet,一切都正常。因此,我创建了一个没有WebSocket的简单测试应用程序。问题仍然存在。应用程序可以使用flask run
命令正常运行,但当我使用Gunicorn命令运行应用程序时,一些功能就不起作用了
File "/home/vasudeva/Codes/sanskrit/application.py", line 2115, in recover
if util.sendemail(user.email, code):
File "/home/vasudeva/Codes/sanskrit/util.py", line 112, in sendemail
server = smtplib.SMTP(HOST, PORT)
File "/usr/lib/python3.7/smtplib.py", line 251, in __init__
(code, msg) = self.connect(host, port)
File "/usr/lib/python3.7/smtplib.py", line 336, in connect
self.sock = self._get_socket(host, port, self.timeout)
File "/usr/lib/python3.7/smtplib.py", line 307, in _get_socket
self.source_address)
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/green/socket.py", line 44, in create_connection
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 517, in getaddrinfo
qname, addrs = _getaddrinfo_lookup(host, family, flags)
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 490, in _getaddrinfo_lookup
raise err
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup
answer = resolve(host, qfamily, False, use_network=use_network)
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 432, in resolve
raise EAI_EAGAIN_ERROR
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 479, in _getaddrinfo_lookup
answer = resolve(host, qfamily, False, use_network=use_network)
File "/home/vasudeva/Codes/sanskrit/env/lib/python3.7/site-packages/eventlet/support/greendns.py", line 432, in resolve
raise EAI_EAGAIN_ERROR
socket.gaierror: [Errno -3] Lookup timed out