首页 > 解决方案 > 在 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(),有没有办法解决这个问题?

提前致谢

标签: amazon-web-servicesamazon-elastic-beanstalkflask-socketio

解决方案


Flask-SocketIO 对负载均衡器和 Web 服务器有非常具体的要求。我认为您可以使用粘性会话配置 ELB 负载均衡器,这将使其工作,但我认为不起作用的部分是使用 eventlet 或 gevent Web 服务器,因为 AWS 以自己的方式调用可调用对象。您需要的是一种使用方式socketio.run()或启动 eventlet/gevent Web 服务器的等效过程。


推荐阅读