首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在beanstalk上部署flask-socketio

在beanstalk上部署flask-socketio
EN

Stack Overflow用户
提问于 2018-10-11 16:54:16
回答 2查看 400关注 0票数 0

我不能让Flask-SocketIO在AWS Elastic Beanstalk ( ELB )上与我的实例一起工作,由于需要使用socketio.run(应用程序)运行Flask-SocketIO,ELB似乎对全局应用程序对象本身进行了调用。

ELB文档指出,使用application.py作为文件名并提供一个可调用的应用程序对象(在本例中为Flask对象)允许Elastic Beanstalk轻松找到应用程序的代码。

我的ELB实例日志显示错误RuntimeError:您需要使用eventlet服务器。有关详细信息,请参阅文档的部署部分。

假设亚马逊网络服务调用application.run(),有没有办法解决这个问题?

提前感谢

EN

回答 2

Stack Overflow用户

发布于 2018-10-25 19:25:33

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

票数 1
EN

Stack Overflow用户

发布于 2021-12-22 16:11:14

AWS beanstalk最近发生了一些变化。默认情况下,它使用gunicorn和nginx。

我使用没有负载均衡器的单个实例设置来使设置正常工作。beanstalk中的负载均衡器配置允许粘性配置,但我的应用程序设计无论如何都只能在单个实例上工作,所以我并不关心。

要创建单实例beanstalk环境:

代码语言:javascript
复制
eb create --single my_env

然后,配置启动gunicorn的方式:创建一个文件Procfile (参见aws docs)

对于eventlet,请使用以下命令:

代码语言:javascript
复制
web: gunicorn --worker-class eventlet -w 1 application:application

并将此代码放入requirements.txt:

代码语言:javascript
复制
gunicorn==20.1.0
eventlet==0.30.2

需要特定的版本来防止cannot import name 'ALREADY_HANDLED'错误,请参阅here

查看flask-socketio doc以了解除gunicorn/eventlet之外的其他部署选项。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52756046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档