我一直试图将我的烧瓶应用程序运行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代码。
答案 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
的套接字连接即可。