소스 검색

增加定时任务时区

xueyiming 2 주 전
부모
커밋
085c6d204d
1개의 변경된 파일10개의 추가작업 그리고 2개의 파일을 삭제
  1. 10 2
      app/scheduler/manager.py

+ 10 - 2
app/scheduler/manager.py

@@ -9,8 +9,12 @@ from app.scheduler.jobs import (
     heartbeat_job,
 )
 
+# 与 scheduler 一致。APScheduler 3.x 在 add_job 里传入 CronTrigger 实例时,若未显式指定
+# timezone,会按 UTC 等默认时区解析 hour/minute,导致「配置的 9:40」实际在 UTC 触发,
+# 北京时间观测为 17:40(+8 小时)。
+_CRON_TZ = "Asia/Shanghai"
 
-scheduler = AsyncIOScheduler(timezone="Asia/Shanghai")
+scheduler = AsyncIOScheduler(timezone=_CRON_TZ)
 
 
 def setup_jobs() -> None:
@@ -23,7 +27,10 @@ def setup_jobs() -> None:
     if settings.demand_pool_hourly_sync_enabled:
         scheduler.add_job(
             demand_pool_today_incremental_sync_job,
-            trigger=CronTrigger(minute=settings.demand_pool_hourly_sync_minute),
+            trigger=CronTrigger(
+                minute=settings.demand_pool_hourly_sync_minute,
+                timezone=_CRON_TZ,
+            ),
             id="demand_pool_hourly_sync_job",
             replace_existing=True,
             max_instances=1,
@@ -35,6 +42,7 @@ def setup_jobs() -> None:
             trigger=CronTrigger(
                 hour=settings.demand_pool_daily_strategy_alert_hour,
                 minute=settings.demand_pool_daily_strategy_alert_minute,
+                timezone=_CRON_TZ,
             ),
             id="demand_pool_daily_strategy_alert_job",
             replace_existing=True,