Flask-SocketIO 的首选生产设置是什么?对 Gunicorn 感到困惑,因为它只能由一名工人产生

What is a preferred production setup for Flask-SocketIO? Confused about Gunicorn as it can only be spawned with one worker

根据 documentation 中的部署部分,Gunicorn 只能使用 1 个带有 Flask-SocketIO 的工作进程。我想知道部署 flask-socket-io 服务器的首选方式是什么?目前我有一个常规的 Flask 应用程序,它使用从 nginx 代理传递到的多工作 gunicorn 服务器。虽然我没有任何负载平衡,但我希望并发性由多个 gunicorn worker 处理,而不是让我对 websockets 服务器有点担心。

也许我误解了 eventlets/greenlets 的功能,但我认为 uwsgi 是我尚未探索的唯一其他选择。是否值得为此目的进入 uwsgi 的学习曲线?

Gunicorn 和 uWSGI 都有一个非常有限的负载均衡器,不支持所需的粘性会话。

如果你想使用这些框架中的任何一个来使用多个worker,你需要在各自的端口上启动几个single-worker服务器,然后在前面使用nginx作为负载平衡器。

除了 nginx 之外,您还需要添加一个消息队列(RabbitMQ、Redis 等),所有这些进程都可以使用它来协调工作。

在此处查看有关部署多台服务器的文档:https://flask-socketio.readthedocs.io/en/latest/#using-multiple-workers