amazon-web-services - 在 beanstalk 上部署 flask-socketio
问题描述
我不能完全让 Flask-SocketIO 在 AWS Elastic Beanstalk (ELB) 上与我的实例一起工作,因为需要使用 socketio.run(application) 运行 Flask-SocketIO,ELB 似乎会调用全局应用程序对象本身。
ELB 文档指出使用 application.py 作为文件名并提供可调用的应用程序对象(在本例中为 Flask 对象)允许 Elastic Beanstalk 轻松找到应用程序的代码。
我的 ELB 实例日志显示错误 RuntimeError: You need to use the eventlet server。有关详细信息,请参阅文档的部署部分。
假设 AWS 调用 application.run(),有没有办法解决这个问题?
提前致谢
解决方案
Flask-SocketIO 对负载均衡器和 Web 服务器有非常具体的要求。我认为您可以使用粘性会话配置 ELB 负载均衡器,这将使其工作,但我认为不起作用的部分是使用 eventlet 或 gevent Web 服务器,因为 AWS 以自己的方式调用可调用对象。您需要的是一种使用方式socketio.run()
或启动 eventlet/gevent Web 服务器的等效过程。
推荐阅读
- image - 更改 Route 并重建 ASP.NET Core Api 控制器后,Docker 映像未更新
- node.js - 如何将排序规则选项传递给 nodejs mongodb 驱动程序?
- c++ - 避免 C++ 中 XML 解析器的链式 if 语句
- list - 在 Prolog 中改变列表的元素
- python - PysimpleGUI 在窗口中为 gif 设置动画
- c++ - 基类未定义,但包含其标头
- google-cloud-platform - 在 GCP 中将谷歌云功能从一个项目迁移到另一个项目?
- google-sheets - 如何在单个单元格中做一个数字范围?
- vb.net - 如何将文本框内容保存到应用程序本身?
- c# - 从 C# 表单上的用户输入更改文件的路径