我在Localhost上有一个工作的聊天应用程序,但它在Heroku上不起作用(昨天的问题(。经过一些研究,我认为问题是我如何启动该应用程序。
procfile当前:
web: gunicorn adult_main:app
我需要将gevent
与gunicorn
结合使用。这样,我应该能够获得最大。1000 socket.io连接,这对我来说足够了。
我已经安装了,并将GEVENT添加到requirements.txt
中。在这里提取文件:
Flask-SocketIO==2.9.6
gunicorn==19.7.1
gevent==1.2.2
gevent-socketio==0.3.6
gevent-websocket==0.10.1
,但我不明白如何正确启动应用程序。在旁注上,我正在使用Heroku的免费层来测试所有内容。
我尝试了一些解决方案,这些解决方案我在网上找到了这些解决方案,但是我还没有完全理解它们,但我还没有找到有关此的文档。这是我的一些尝试:
web: gunicorn -k gevent-socketio adult_main:app
web: gunicorn -k gevent adult_main:app
我也试图没有枪支,但我认为这完全是错误的。我在这里的正确路径吗?
编辑
我设法取得了一些进展:
web: gunicorn -k gevent -w 1 adult_main:app
该应用程序现在不会在开始时崩溃,但是在Web控制台中,我看到了一个错误:
socket.io.js:7 WebSocket connection to 'wss://my-
project.herokuapp.com/socket.io/?
EIO=3&transport=websocket&sid=0022c1937df648bbab836bfcb4c35' failed: Error
during WebSocket handshake: Unexpected response code: 500
在Heroku日志中:
RuntimeError: You need to use the gevent-websocket server.
编辑
事件,尽管我看到了这些错误,但聊天现在在Heroku上工作。那真的很奇怪。可能我现在只能建立1个连接,现在如何继续?
错误是正确的,您需要使用Gevent-websocket Weberver,而不是Gunicorn随附的本机Gevent Web服务器。
看来您正在寻找各地的答案。我建议您将烧瓶插入文档作为真理的最终来源,因为我将其更新。
对于此特定情况,文档的枪支部分向您展示了如何启动服务器的方式:
gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 module:app