python-3.x - 使用 mod_wsgi 托管的烧瓶应用程序作为外部进程发送到在 gunicorn 上运行的 Flask-SocketIO 服务器和 eventlet worker
问题描述
我在弹性豆茎上部署了一个烧瓶应用程序。这是一个 REST api,主要执行数据库 CRUD 操作,计算量不大。提供的默认配置是不支持 Flask-SocketIO 的 Apache+mod_wsgi。虽然我设法用 nginx+gunicorn+eventlet 设置替换它。它运行良好,但有时我会遇到一些部署问题。
使用默认的 mod_wsgi 设置并使用它来发出数据,如此处提到的 https://flask-socketio.readthedocs.io/en/latest/#emitting-from-an-external-process并运行共享相同的 flask-socketio 服务器Redis 消息队列,我能够从 mod_wsgi 实例发出数据,它似乎运行良好。
谁能告诉我这种配置的 Flask-SocketIO 是否存在任何问题,或者 gunicorn+nginx 方式是否更适合?如果我在当前配置中遇到任何进一步的问题,我会转向它。
解决方案
没有问题,但也有缺点。
外部进程不能接收事件,也不能接收它们发出的事件的回调。因此,请确保这不会成为未来的限制。
另一个选择是将 mod_wsgi 服务器作为 Socket.IO 客户端而不是外部进程连接到 Flask-SocketIO 服务器。如果您作为客户端连接,则不需要使用 Redis 队列,连接是通过长轮询和/或 WebSocket 完成的。
推荐阅读
- laravel - 我需要帮助将此查询转换为 Laravel 查询生成器
- android - 是否可以从 React Native 重定向到本机设置页面以进行订阅管理?
- laravel - 我们无法识别您的电子邮件地址
- bash - 替换文件中的环境变量
- java - 如何在 Java Azure 函数中使用事件中心触发器
- laravel - 无法返回登录页面
- python - oracle使用python更新sql
- visual-studio - Xamarin Android 项目签名与 V2 签名(Visual Studio 2019 专业版)
- react-native - Visual Stuiod Code Intellisense 不适用于 React Native 别名
- scons - Python SCons 行动?