无法将flask-socketio应用程序推送到heroku

时间:2017-04-20 13:43:37

标签: python heroku flask flask-socketio

我一直试图将我的烧瓶应用程序运行socketio到Heroku,但无济于事。我把它缩小到了Procfile。我经常收到503服务器错误,因为我的程序并不想连接。我在本地进行了测试,效果很好。

我有几个版本的Procfile,它们是

web: gunicorn -b 0.0.0.0:$PORT app:userchat_manager

web: python userchat_manager.py

其中userchar_manager文件包含用于运行应用程序的SocketIO.run()函数。解决这个问题的最佳方法是什么?

编辑:我将Procfile更改为

web: gunicorn -b 0.0.0.0:$PORT app:app

并加载。但是,每当我尝试发送消息时,它都不会发送消息,而是获得400代码。

2 个答案:

答案 0 :(得分:0)

请参阅文档的Deployment部分。只有在与eventlet或gevent一起使用时才支持gunicorn Web服务器,在这两种情况下,您都必须使用单个工作进程。

如果你想放弃gunicorn并改为运行原生Web服务器,你应该以一种加载服务器应该从$states环境变量暴露的端口的方式对userchat_manager.py脚本进行编码由Heroku。如果你走这条路,我仍然认为你应该考虑使用eventlet或gevent,而不使用异步框架,性能非常糟糕(没有WebSocket支持),并且可以同时连接的客户端数量非常有限(每个工人只有一个客户)。

答案 1 :(得分:0)

尝试一下:

web: gunicorn --worker-class eventlet -w 1 your_module:app

您不需要端口即可连接套接字,只需将您的heroku应用程序网址用作与:PORT的套接字连接即可。