修复 ValidationQueue 重启恢复:启动时唤醒 Worker 处理 pending 任务
问题:服务重启后,reset_processing() 将中断任务恢复为 pending, 但没有发送信号唤醒 Worker,导致任务永远挂起。 修复:在 start() 中,启动 Worker 后根据 pending 任务数量发送信号, 确保恢复的任务能被立即消费和验证。
This commit is contained in:
@@ -61,6 +61,12 @@ class ValidationQueue:
|
|||||||
|
|
||||||
for i in range(self.worker_count):
|
for i in range(self.worker_count):
|
||||||
self._workers.append(asyncio.create_task(self._worker_loop(i)))
|
self._workers.append(asyncio.create_task(self._worker_loop(i)))
|
||||||
|
|
||||||
|
# 唤醒 Worker 处理恢复的 pending 任务
|
||||||
|
if pending:
|
||||||
|
for _ in range(min(pending, self.worker_count)):
|
||||||
|
self._signal.put_nowait(None)
|
||||||
|
|
||||||
logger.info(f"ValidationQueue started with {self.worker_count} workers")
|
logger.info(f"ValidationQueue started with {self.worker_count} workers")
|
||||||
|
|
||||||
async def stop(self):
|
async def stop(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user