1

在本地,它有效。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 命令来启动部署中的应用程序。

4

1 回答 1

0

有一个包含内容的 procfile

web: gunicorn --worker-class eventlet -w 1 wsgi:app

做了工作。


此外,将测功机设置为“开”也很重要在此处输入图像描述

于 2022-01-29T13:43:26.350 回答