Gunicorn 上的 Flask-SocketIO 应用 运行 抛出 TypeError
Flask-SocketIO app running on Gunicorn throws TypeError
我有一个工作的 Flask-SocketIO 服务器,但它不能与 Gunicorn 一起工作。服务器的相关部分如下所示:
def main(env, resp):
app = Flask(__name__,
static_url_path='',
static_folder='dist',
template_folder='dist')
socketio = SocketIO(app)
@app.route('/')
def home():
return app.send_static_file('index.html')
# socketio.run(app, host='0.0.0.0', port=8000) I comment this out when using Gunicorn because otherwise it tries to run the process twice and throws an error.
我正在使用 eventlet 和 运行 Flask-SocketIO 文档中描述的以下命令 here :
gunicorn --worker-class eventlet -b 0.0.0.0:8000 -w 1 index:main
gunicorn 进程启动正常,但是当我导航到页面时出现以下服务器错误:
Error handling request /
Traceback (most recent call last):
File "/home/myusername/.local/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 55, in handle
self.handle_request(listener_name, req, client, addr)
File "/home/myusername/.local/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 113, in handle_request
for item in respiter:
TypeError: 'NoneType' object is not iterable
我找不到关于此错误的任何信息,如果有任何想法,我将不胜感激。
我不得不从 main() return 应用程序。 main 中的附加参数是不必要的。我还添加了一个 wsgi 文件:
from index import main
if __name__ == '__main__':
main()
else:
gmain = main()
然后 运行 gunicorn 使用该文件:gunicorn -k eventlet -b 0.0.0.0:8000 -w 1 wsgi:gmain
并且成功了。 Seleniumwire 抛出错误,但这超出了这个问题的范围。
我有一个工作的 Flask-SocketIO 服务器,但它不能与 Gunicorn 一起工作。服务器的相关部分如下所示:
def main(env, resp):
app = Flask(__name__,
static_url_path='',
static_folder='dist',
template_folder='dist')
socketio = SocketIO(app)
@app.route('/')
def home():
return app.send_static_file('index.html')
# socketio.run(app, host='0.0.0.0', port=8000) I comment this out when using Gunicorn because otherwise it tries to run the process twice and throws an error.
我正在使用 eventlet 和 运行 Flask-SocketIO 文档中描述的以下命令 here :
gunicorn --worker-class eventlet -b 0.0.0.0:8000 -w 1 index:main
gunicorn 进程启动正常,但是当我导航到页面时出现以下服务器错误:
Error handling request /
Traceback (most recent call last):
File "/home/myusername/.local/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 55, in handle
self.handle_request(listener_name, req, client, addr)
File "/home/myusername/.local/lib/python3.6/site-packages/gunicorn/workers/base_async.py", line 113, in handle_request
for item in respiter:
TypeError: 'NoneType' object is not iterable
我找不到关于此错误的任何信息,如果有任何想法,我将不胜感激。
我不得不从 main() return 应用程序。 main 中的附加参数是不必要的。我还添加了一个 wsgi 文件:
from index import main
if __name__ == '__main__':
main()
else:
gmain = main()
然后 运行 gunicorn 使用该文件:gunicorn -k eventlet -b 0.0.0.0:8000 -w 1 wsgi:gmain
并且成功了。 Seleniumwire 抛出错误,但这超出了这个问题的范围。