400(错误请求)和无效会话

ado*_*app 3 python flask gunicorn

我使用示例应用程序(https://github.com/miguelgrinberg/Flask-SocketIO/tree/master/example),它在本地Windows上启动正常,但在服务器CentOS上它失败并出现错误400。我使用Gunicorn + Nginx + Eventlet 。

日志:

2019-12-19 16:20:41,694 - INFO: 30bd9dce92f245698ae73dfec9fc0197: Sending packet MESSAGE data 0 - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
2019-12-19 16:20:41,730 - INFO: 30bd9dce92f245698ae73dfec9fc0197: Received packet MESSAGE data 0/test, - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:52]
2019-12-19 16:20:41,731 - INFO: 30bd9dce92f245698ae73dfec9fc0197: Sending packet MESSAGE data 2/test,["my_response",{"data":"Connected","count":0}] - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
2019-12-19 16:20:41,731 - INFO: 30bd9dce92f245698ae73dfec9fc0197: Sending packet MESSAGE data 0/test - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
2019-12-19 16:20:41,732 - INFO: 30bd9dce92f245698ae73dfec9fc0197: Received request to upgrade to websocket - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:105]
2019-12-19 16:21:12,524 - WARNING: Invalid session 30bd9dce92f245698ae73dfec9fc0197 - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/server.py:370]
2019-12-19 16:21:13,708 - INFO: 64aaa335d03e48adbca4d6db461ba372: Sending packet OPEN data {'sid': '64aaa335d03e48adbca4d6db461ba372', 'upgrades': ['websocket'], 'pingTimeout': 60000, 'pingInterval': 25000} - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
2019-12-19 16:21:13,709 - INFO: 64aaa335d03e48adbca4d6db461ba372: Sending packet MESSAGE data 0 - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
2019-12-19 16:21:13,744 - INFO: 64aaa335d03e48adbca4d6db461ba372: Received request to upgrade to websocket - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:105]
2019-12-19 16:21:44,711 - WARNING: Invalid session 64aaa335d03e48adbca4d6db461ba372 - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/server.py:390]
2019-12-19 16:21:44,712 - WARNING: Invalid session 64aaa335d03e48adbca4d6db461ba372 - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/server.py:370]
2019-12-19 16:21:46,801 - INFO: da4cbf9a20ba4bfc9cd731644bd4bf6f: Sending packet OPEN data {'sid': 'da4cbf9a20ba4bfc9cd731644bd4bf6f', 'upgrades': ['websocket'], 'pingTimeout': 60000, 'pingInterval': 25000} - [in /home/venv/py37sio/lib/python3.7/site-packages/engineio/socket.py:95]
Run Code Online (Sandbox Code Playgroud)

然后当我不使用Nginx+Gunicorn时,运行python3 app.py是可以的。

但只是使用 Gunicorn gunicorn -w 1 -b 127.0.0.1:5000 app:app,也详细信息如上面的日志。

所以我猜问题是Gunicorn,但我不知道如何解决。

ado*_*app 5

我需要使用 eventlet 工作类型启动 Gunicorn:

gunicorn -w 1 -k eventlet -b 127.0.0.1:5000
Run Code Online (Sandbox Code Playgroud)