|
|
@@ -589,11 +589,17 @@ async def receipt_download_controller(
|
|
|
from apscheduler.schedulers.asyncio import AsyncIOScheduler
|
|
|
|
|
|
scheduler = AsyncIOScheduler()
|
|
|
+_scheduler_started = False
|
|
|
|
|
|
|
|
|
@AccountRouter.on_event("startup")
|
|
|
async def start_retry_scheduler():
|
|
|
- """启动时立即执行一次,之后每分钟执行"""
|
|
|
+ """启动时立即执行一次,之后每分钟执行(只启动一次,防多 router 重复触发)"""
|
|
|
+ global _scheduler_started
|
|
|
+ if _scheduler_started:
|
|
|
+ return
|
|
|
+ _scheduler_started = True
|
|
|
+
|
|
|
log.info("[重试任务] 启动反查定时任务")
|
|
|
try:
|
|
|
await AccountService.retry_dealing_transfers()
|
|
|
@@ -608,18 +614,13 @@ async def start_retry_scheduler():
|
|
|
id='retry_dealing_transfers',
|
|
|
replace_existing=True,
|
|
|
)
|
|
|
- if not scheduler.running:
|
|
|
- scheduler.start()
|
|
|
- else:
|
|
|
- log.debug("[重试任务] 调度器已在运行,跳过启动")
|
|
|
+ scheduler.start()
|
|
|
+ log.info("[重试任务] 定时任务已注册(每分钟执行)")
|
|
|
log.info("[重试任务] 定时任务已注册(每分钟执行)")
|
|
|
|
|
|
|
|
|
@AccountRouter.on_event("shutdown")
|
|
|
async def stop_retry_scheduler():
|
|
|
- try:
|
|
|
- if scheduler.running:
|
|
|
- scheduler.shutdown(wait=False)
|
|
|
- log.info("[重试任务] 定时任务已停止")
|
|
|
- except Exception:
|
|
|
- pass
|
|
|
+ if scheduler.running:
|
|
|
+ scheduler.shutdown(wait=False)
|
|
|
+ log.info("[重试任务] 定时任务已停止")
|