python
runtime_error
ai_generated
partial
后台任务异常: RuntimeError: 事件循环已关闭
Exception in background task: RuntimeError: Event loop is closed
ID: python/starlette-background-task-exception
80%修复率
83%置信度
0证据数
2024-11-15首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| 3.x | active | — | — | — |
根因分析
BackgroundTask 在响应发送后、事件循环拆除后尝试使用事件循环,常见于测试或使用 loop.run_until_complete 时。
English
A BackgroundTask attempts to use the event loop after the response is sent and the loop is torn down, often in tests or when using loop.run_until_complete.
解决方案
-
90% 成功率
Use httpx.AsyncClient with ASGITransport in tests to keep loop alive
-
82% 成功率
Prefer sync def background tasks for I/O that must complete after response
无效尝试
常见但无效的做法:
-
80% 失败
Loop is already closed; cannot recover.
-
70% 失败
Same closed-loop issue in test environments.