Python Heroku配置Procfile Gunicorn for socket.io聊天应用程序|Runti



我在Localhost上有一个工作的聊天应用程序,但它在Heroku上不起作用(昨天的问题(。经过一些研究,我认为问题是我如何启动该应用程序。

procfile当前:

web: gunicorn adult_main:app

我需要将geventgunicorn结合使用。这样,我应该能够获得最大。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

最新更新