mirror of
https://github.com/fawney19/Aether.git
synced 2026-09-02 09:20:22 +08:00
fix(task-poller): 捕获 CancelledError 避免关闭时产生 traceback
视频任务轮询在应用关闭时,Redis 异步操作被取消会抛出 CancelledError,由于其继承自 BaseException 而非 Exception, 原有的异常处理无法捕获,导致 APScheduler 打印完整 traceback。 拆分 poll_pending_tasks 为入口方法和 _do_poll 内部方法, 在入口层捕获 CancelledError 后静默返回。
This commit is contained in:
@@ -103,6 +103,13 @@ class TaskPollerService:
|
||||
scheduler.remove_job(self.adapter.job_id)
|
||||
|
||||
async def poll_pending_tasks(self) -> None:
|
||||
try:
|
||||
await self._do_poll()
|
||||
except asyncio.CancelledError:
|
||||
logger.debug("[{}] poll_pending_tasks cancelled (shutdown?)", self.adapter.task_type)
|
||||
return
|
||||
|
||||
async def _do_poll(self) -> None:
|
||||
async with self._lock:
|
||||
token = await self._acquire_redis_lock()
|
||||
if token is None:
|
||||
|
||||
Reference in New Issue
Block a user