簡體   English   中英

Python heroku為socket.io聊天應用程序配置procfile gunicorn + gevent | RuntimeError:您需要使用gevent-websocket服務器

[英]Python heroku configure procfile gunicorn + gevent for socket.io chat app | RuntimeError: You need to use the gevent-websocket server

我在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網絡服務器,而不是gunicorn隨附的本機gevent網絡服務器。

似乎您到處都在尋找答案。 我建議您使用Flask-SocketIO文檔作為最終的事實來源,因為我對此進行了更新。

對於這種特定情況,文檔的Gunicorn部分向您展示了如何啟動服務器:

gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 module:app

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM