![](/img/trans.png)
[英]How to catch an exception in Flask from sqlalchemy @validate decorator
[英]How to catch an Exception like this on Flask?
我運行這樣一個簡單的燒瓶應用程序:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def welcome():
return "OK"
app.config.update(
DEBUG = True
)
if __name__ == '__main__':
app.run(use_reloader = False)
當我運行並訪問它時,有時(並非總是)它無法響應請求並拋出一個除外:
Exception happened during processing of request from ('127.0.0.1', 54481)
Traceback (most recent call last):
File "c:\python27\Lib\SocketServer.py", line 295, in _handle_request_noblock
self.process_request(request, client_address)
File "c:\python27\Lib\SocketServer.py", line 321, in process_request
self.finish_request(request, client_address)
File "c:\python27\Lib\SocketServer.py", line 334, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "c:\python27\Lib\SocketServer.py", line 651, in __init__
self.finish()
File "c:\python27\Lib\SocketServer.py", line 710, in finish
self.wfile.close()
File "c:\python27\Lib\socket.py", line 279, in close
self.flush()
File "c:\python27\Lib\socket.py", line 303, in flush
self._sock.sendall(view[write_offset:write_offset+buffer_size])
error: [Errno 10053]
我無法理解是什么導致了這個錯誤? 我該如何解決?
try except
抓住它,我怎么能用try except
?
我最近在嘗試使用Flask來提供音頻文件時遇到了此錯誤消息。 每當客戶端在流結束之前關閉流時,我都會收到此錯誤消息。
此錯誤消息不是來自Flask應用程序,而是來自用於分派請求數據的基礎SocketServer。 發生的事情是由於某種原因,與客戶端的連接正在結束,但Flask繼續嘗試將數據寫入已關閉的套接字。 您無法從Flask應用程序中捕獲此異常,因為Flask會為您捕獲它。 Flask將其作為一項服務打印出來,通知您流已過早關閉,即在Flask完成向數據流寫入數據之前。
總而言之,此錯誤消息是Flask的內部信息,Flask正在打印它,告訴您在連接關閉之前無法將所有數據傳遞給客戶端。 你無法抓住它,你沒有任何理由去捕捉它。
我發現這個解決方案至少可以暫時修復。
if __name__ == '__main__':
while True:
try:
app.run(use_reloader = False)
except:
pass
您可以添加自己的退出邏輯,或者使用CTRL + \\保留程序,發送SIGQUIT。 (如果你正在運行帶螺紋的燒瓶,這很重要)
但是你不能:
except KeyboardInterupt:
因為Flask已經捕獲了KeyboardInterupt異常並處理它們。
錯誤10052表示您正在使用Windows,因此據我所知,關閉命令窗口以退出程序
這可能是由於使用的端口號是54481,通過查看您的錯誤消息。 它可能與其他東西發生沖突。 我還建議不要使用use_reloader參數,因為你的DEBUG已經設置為False。 因此,燒瓶不會重新加載任何代碼更改。 你可以這樣做:
if __name__ == '__main__':
app.run(port=5000)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.