|
@@ -9,8 +9,12 @@ from app.scheduler.jobs import (
|
|
|
heartbeat_job,
|
|
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:
|
|
def setup_jobs() -> None:
|
|
@@ -23,7 +27,10 @@ def setup_jobs() -> None:
|
|
|
if settings.demand_pool_hourly_sync_enabled:
|
|
if settings.demand_pool_hourly_sync_enabled:
|
|
|
scheduler.add_job(
|
|
scheduler.add_job(
|
|
|
demand_pool_today_incremental_sync_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",
|
|
id="demand_pool_hourly_sync_job",
|
|
|
replace_existing=True,
|
|
replace_existing=True,
|
|
|
max_instances=1,
|
|
max_instances=1,
|
|
@@ -35,6 +42,7 @@ def setup_jobs() -> None:
|
|
|
trigger=CronTrigger(
|
|
trigger=CronTrigger(
|
|
|
hour=settings.demand_pool_daily_strategy_alert_hour,
|
|
hour=settings.demand_pool_daily_strategy_alert_hour,
|
|
|
minute=settings.demand_pool_daily_strategy_alert_minute,
|
|
minute=settings.demand_pool_daily_strategy_alert_minute,
|
|
|
|
|
+ timezone=_CRON_TZ,
|
|
|
),
|
|
),
|
|
|
id="demand_pool_daily_strategy_alert_job",
|
|
id="demand_pool_daily_strategy_alert_job",
|
|
|
replace_existing=True,
|
|
replace_existing=True,
|