[英]Flask debug mode when using sockets
我正在構建使用套接字(flask socketio)的python Flask應用程序。 基本上,客戶端會將一些命令發送到他想要執行的服務器。 服務器將執行命令並將套接字發送到客戶端命令輸出。
有處理器功能接收用戶的請求。 該函數將執行命令並將大量套接字發送回客戶端。 也可以使用stdout和stderr線程。
@socket.on ('run-code')
@authenticated_only
def socket_run_code_request (request):
# run command
# emit socket for each line of output
如果flask應用程序處於調試模式 ,則函數內部發出的套接字將在函數結束前到達客戶端(這是可取的)。 但是如果關閉調試,所有套接字都會以某種方式排隊並在函數結束后發送。 沒有來自服務器的實時響應
點擊執行 - > 等一下 - > 這是你的輸出
代替:
點擊執行 - > 這里有點輸出 - > 這是另一行 - > ...
我已閱讀Flask文檔,但調試說明如下 :
如果啟用調試支持,服務器將在代碼更改時重新加載,如果出現問題,它還將為您提供有用的調試器
有沒有辦法告訴Flask馬上發送一切,或者一些想法如何解決這個問題? 它可能與燒瓶的燒瓶插入有關
非常感謝您的反饋:)
我的猜測是問題是你沒有修補標准庫,所以所有這些調用你支持監視異步進程的調用都是阻塞的。 在調試模式下,Flask-SocketIO會進行猴子修補,因為如果沒有它,Flask重新加載器就無法工作。
要修補補丁,只需在主Python腳本的最頂部添加以下內容:
from gevent import monkey
monkey.patch_all()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.