关闭 playwright 时发生错误
报错内容如下:
12-26 11:01:46 [INFO] uvicorn | Shutting down
12-26 11:01:46 [INFO] uvicorn | Waiting for application shutdown.
12-26 11:01:46 [WARNING] nonebot_plugin_htmlrender | 关闭 playwright 时发生错误。
Traceback (most recent call last):
File "<string>", line 17, in <module>
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot/__init__.py", line 335, in run
get_driver().run(*args, **kwargs)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot/drivers/fastapi.py", line 186, in run
uvicorn.run(
File "/root/BiliBot/.venv/lib/python3.11/site-packages/uvicorn/main.py", line 579, in run
server.run()
File "/root/BiliBot/.venv/lib/python3.11/site-packages/uvicorn/server.py", line 65, in run
return asyncio.run(self.serve(sockets=sockets))
File "/usr/lib/python3.11/asyncio/runners.py", line 190, in run
return runner.run(main)
File "/usr/lib/python3.11/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/uvicorn/lifespan/on.py", line 86, in main
await app(scope, self.receive, self.send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 29, in __call__
return await self.app(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/middleware/errors.py", line 152, in __call__
await self.app(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 48, in __call__
await self.app(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/routing.py", line 724, in app
await self.lifespan(scope, receive, send)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/starlette/routing.py", line 693, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "/usr/lib/python3.11/contextlib.py", line 211, in __aexit__
await anext(self.gen)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot/drivers/fastapi.py", line 157, in _lifespan_manager
await self._lifespan.shutdown()
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot/internal/driver/_lifespan.py", line 49, in shutdown
await self._run_lifespan_func(self._shutdown_funcs)
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot/internal/driver/_lifespan.py", line 36, in _run_lifespan_func
await cast(ASYNC_LIFESPAN_FUNC, func)()
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot_plugin_htmlrender/__init__.py", line 45, in shutdown
await shutdown_browser()
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot_plugin_htmlrender/browser.py", line 121, in shutdown_browser
with _suppress_and_log():
File "/usr/lib/python3.11/contextlib.py", line 155, in __exit__
self.gen.throw(typ, value, traceback)
> File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot_plugin_htmlrender/browser.py", line 26, in _suppress_and_log
yield
File "/root/BiliBot/.venv/lib/python3.11/site-packages/nonebot_plugin_htmlrender/browser.py", line 122, in shutdown_browser
await _browser.close()
File "/root/BiliBot/.venv/lib/python3.11/site-packages/playwright/async_api/_generated.py", line 14176, in close
return mapping.from_maybe_impl(await self._impl_obj.close(reason=reason))
File "/root/BiliBot/.venv/lib/python3.11/site-packages/playwright/_impl/_browser.py", line 192, in close
raise e
File "/root/BiliBot/.venv/lib/python3.11/site-packages/playwright/_impl/_browser.py", line 189, in close
await self._channel.send("close", {"reason": reason})
File "/root/BiliBot/.venv/lib/python3.11/site-packages/playwright/_impl/_connection.py", line 61, in send
return await self._connection.wrap_api_call(
File "/root/BiliBot/.venv/lib/python3.11/site-packages/playwright/_impl/_connection.py", line 528, in wrap_api_call
raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
RuntimeError: Browser.close: unable to perform operation on <WriteUnixTransport closed=True reading=False 0x7fae0e502dc0>; the handler is closed
求助!我发生了类似的问题:关闭 playwright 时发生错误。
Browser.close: Connection closed while reading from the driver
每当在前台通过 Ctrl + C 关闭程序时就会出现以下异常,不过程序可正常关闭。
环境:
- windows 11 家庭中文版
- python3.11.4 venv虚拟环境
完整异常如下:
01-03 10:32:10 [WARNING] nonebot_plugin_htmlrender | 关闭 playwright 时发生错误。
Traceback (most recent call last):
File "E:\Code\python\Project_VSCode\QQrobot\bot.py", line 45, in <module>
nonebot.run()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot\__init__.py", line 337, in run
get_driver().run(*args, **kwargs)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot\drivers\fastapi.py", line 188, in run
uvicorn.run(
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\uvicorn\main.py", line 579, in run
server.run()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\uvicorn\server.py", line 66, in run
return asyncio.run(self.serve(sockets=sockets))
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 190, in run
return runner.run(main)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\runners.py", line 118, in run
return self._loop.run_until_complete(task)
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 640, in run_until_complete
self.run_forever()
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\windows_events.py", line 321, in run_forever
super().run_forever()
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 607, in run_forever
self._run_once()
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\base_events.py", line 1922, in _run_once
handle._run()
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\asyncio\events.py", line 80, in _run
self._context.run(self._callback, *self._args)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\uvicorn\lifespan\on.py", line 86, in main
await app(scope, self.receive, self.send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\uvicorn\middleware\proxy_headers.py", line 29, in __call__
return await self.app(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\fastapi\applications.py", line 1054, in __call__
await super().__call__(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\applications.py", line 113, in __call__
await self.middleware_stack(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\middleware\errors.py", line 152, in __call__
await self.app(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\middleware\exceptions.py", line 48, in __call__
await self.app(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\routing.py", line 715, in __call__
await self.middleware_stack(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\routing.py", line 724, in app
await self.lifespan(scope, receive, send)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\starlette\routing.py", line 693, in lifespan
async with self.lifespan_context(app) as maybe_state:
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 211, in __aexit__
await anext(self.gen)
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot\drivers\fastapi.py", line 159, in _lifespan_manager
await self._lifespan.shutdown()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 81, in shutdown
await self._run_lifespan_func(reversed(self._shutdown_funcs))
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot\internal\driver\_lifespan.py", line 55, in _run_lifespan_func
await cast(ASYNC_LIFESPAN_FUNC, func)()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot_plugin_htmlrender\__init__.py", line 45, in shutdown
await shutdown_browser()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot_plugin_htmlrender\browser.py", line 121, in shutdown_browser
with _suppress_and_log():
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 155, in __exit__
self.gen.throw(typ, value, traceback)
> File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot_plugin_htmlrender\browser.py", line 26, in _suppress_and_log
yield
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\nonebot_plugin_htmlrender\browser.py", line 122, in shutdown_browser
await _browser.close()
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\playwright\async_api\_generated.py", line 14176, in close
return mapping.from_maybe_impl(await self._impl_obj.close(reason=reason))
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\playwright\_impl\_browser.py", line 192, in close
raise e
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\playwright\_impl\_browser.py", line 189, in close
await self._channel.send("close", {"reason": reason})
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\playwright\_impl\_connection.py", line 61, in send
return await self._connection.wrap_api_call(
File "E:\Code\python\Project_VSCode\QQrobot\.venv\Lib\site-packages\playwright\_impl\_connection.py", line 528, in wrap_api_call
raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None
Exception: Browser.close: Connection closed while reading from the driver
playwright在Windows下异步的特色,无视即可
playwright在Windows下异步的特色,无视即可
好的,感谢解答!
playwright在Windows下异步的特色,无视即可
Ubuntu 24.04 LTS 也有这个怎么办?
^C01-09 13:52:14 [INFO] uvicorn | Shutting down
01-09 13:52:14 [WARNING] nonebot | OneBot V11 | WebSocket for Bot xxxxxx closed by peer
01-09 13:52:14 [INFO] websockets | connection closed
01-09 13:52:15 [INFO] uvicorn | Waiting for application shutdown.
01-09 13:52:15 [INFO] nonebot_plugin_apscheduler | Scheduler Shutdown
01-09 13:52:15 [WARNING] nonebot_plugin_htmlrender | 关闭 playwright 时发生错误。
Traceback (most recent call last):
File "
File "/opt/python/lib/python3.12/site-packages/nonebot_plugin_htmlrender/browser.py", line 26, in _suppress_and_log yield File "/opt/python/lib/python3.12/site-packages/nonebot_plugin_htmlrender/browser.py", line 122, in shutdown_browser await _browser.close() File "/opt/python/lib/python3.12/site-packages/playwright/async_api/_generated.py", line 14176, in close return mapping.from_maybe_impl(await self._impl_obj.close(reason=reason)) File "/opt/python/lib/python3.12/site-packages/playwright/_impl/_browser.py", line 192, in close raise e File "/opt/python/lib/python3.12/site-packages/playwright/_impl/_browser.py", line 189, in close await self._channel.send("close", {"reason": reason}) File "/opt/python/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 61, in send return await self._connection.wrap_api_call( File "/opt/python/lib/python3.12/site-packages/playwright/_impl/_connection.py", line 528, in wrap_api_call raise rewrite_error(error, f"{parsed_st['apiName']}: {error}") from None RuntimeError: Browser.close: unable to perform operation on <WriteUnixTransport closed=True reading=False 0x7a7c07a15d80>; the handler is closed 01-09 13:52:15 [INFO] nonebot_plugin_htmlrender | Browser Stopped. 01-09 13:52:15 [INFO] uvicorn | Application shutdown complete. 01-09 13:52:15 [INFO] uvicorn | Finished server process [1114512]
浏览器是否还在后台运行?如果不在后台运行(已正常关闭),就当是特性忽略吧(?)
Try 0.6.0