Flet Web应用关闭/刷新页面触发ConnectionResetError异常求助
关闭/刷新Flet Web应用标签页触发ConnectionResetError是否正常?
环境信息
- Flet版本:
flet 0.22.1 flet-core 0.22.1 flet-runtime 0.22.1 - 运行命令:
flet run .\minimal.py --web -p 4488
最简复现代码
import flet as ft from flet import Page, Text def main(page: Page): page.title = "Hello, Flet!" page.add(Text("Hello, Flet!")) ft.app(target=main)
触发的异常
Exception in callback _ProactorBasePipeTransport._call_connection_lost(None) handle: <Handle _ProactorBasePipeTransport._call_connection_lost(None)> Traceback (most recent call last): File "C:\Python310\lib\asyncio\events.py", line 80, in _run self._context.run(self._callback, *self._args) File "C:\Python310\lib\asyncio\proactor_events.py", line 162, in _call_connection_lost self._sock.shutdown(socket.SHUT_RDWR) ConnectionResetError: [WinError 10054] Удаленный хост принудительно разорвал существующее подключение
问题解答
这种情况属于正常现象,不需要额外处理,原因如下:
- 该异常是浏览器关闭/刷新标签页时,主动切断了与Flet服务端的WebSocket连接,服务端底层(Python asyncio)尝试对已失效的套接字执行关闭操作时触发的错误
- 从实际运行结果来看,Flet框架已经做了容错处理,应用不会因这个异常崩溃,仍能正常接收新的连接请求
- WinError 10054对应的是"远程主机强迫关闭了一个现有的连接",属于Web应用中客户端主动断连的常规场景,仅为底层日志级报错,不影响核心功能
内容的提问来源于stack exchange,提问作者Сергей Попков
相关产品推荐
相关产品推荐

