[英]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
我需要將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網絡服務器,而不是gunicorn隨附的本機gevent網絡服務器。
似乎您到處都在尋找答案。 我建議您使用Flask-SocketIO文檔作為最終的事實來源,因為我對此進行了更新。
對於這種特定情況,文檔的Gunicorn部分向您展示了如何啟動服務器:
gunicorn -k geventwebsocket.gunicorn.workers.GeventWebSocketWorker -w 1 module:app
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.