fix async bug

This commit is contained in:
bridge
2025-10-23 00:50:52 +08:00
parent 4e9e646b02
commit 1520c6489f
7 changed files with 149 additions and 27 deletions

View File

@@ -0,0 +1,24 @@
from __future__ import annotations
import asyncio
from typing import Awaitable, Callable, Optional
def schedule_background(coro: Awaitable, *, fallback: Optional[Callable[[], None]] = None) -> None:
"""
在有事件循环时将协程投递为后台任务;否则执行同步回退。
- coro: 需要异步执行的协程对象
- fallback: 无事件循环时的回退执行函数(可为空)
"""
try:
loop = asyncio.get_running_loop()
loop.create_task(coro)
except RuntimeError:
if fallback is not None:
fallback()
else:
# 无回退则静默返回,调用方自行决定后续行为
return