在本地,它有效。Socketio 升级到 websocket,而不是诉诸轮询。
从日志中可以明显看出:
...
FYnWEW0ufWGO7ExdAAAA: Received request to upgrade to websocket
FYnWEW0ufWGO7ExdAAAA: Upgrade to websocket successful
...
部署应用程序后,当我使用内容创建 a 时,它会部分工作procfile
:
web: gunicorn app:app
这里的问题是 socketio 无法升级到 websocket,因此求助于轮询。
这是一个 gif,展示了它在生产中没有升级到 websockets 而是诉诸垃圾邮件轮询
我的文件结构是
wsgi.py
app.py
Procfile
requirements.txt
这就是我初始化socketio的方式
app = ...
socketio = SocketIO(app,
logger=True,
engineio_logger=True,
cors_allowed_origins="*"
)
if __name__ == "__main__":
socketio.run(app, debug=False, port=5000)
注意我没有设置async_mode
,这是这个 SO-question 的问题
如何将带有 socketio 的烧瓶应用程序部署到 Heroku 并将其升级到 websockets?
我认为问题在于我只是没有使用正确的 procfile 命令来启动部署中的应用程序。