Skip to content

Commit 1408632

Browse files
authored
🐛 create task with local time-zone (#375)
* 📌 resolve conflict * 📌 update poetry.lock * 📌 refresh poetry.lock
1 parent a73868e commit 1408632

File tree

3 files changed

+20
-8
lines changed

3 files changed

+20
-8
lines changed

runtime/datamate-python/app/module/shared/schedule/scheduler.py

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,26 @@
66
from apscheduler.triggers.cron import CronTrigger
77

88
from app.core.logging import get_logger
9+
import pytz
910

1011
logger = get_logger(__name__)
1112

1213

1314
class Scheduler:
14-
def __init__(self, name: str = "scheduler") -> None:
15+
def __init__(self, name: str = "scheduler", timezone: Optional[str] = None) -> None:
1516
self._name = name
1617
self._scheduler: Optional[AsyncIOScheduler] = None
18+
# 使用指定的时区,如果没有指定则使用本地时区
19+
self._timezone = pytz.timezone(timezone) if timezone else None
1720

1821
def start(self) -> AsyncIOScheduler:
1922
if self._scheduler is None:
20-
self._scheduler = AsyncIOScheduler()
23+
# 配置调度器使用本地时区
24+
from tzlocal import get_localzone
25+
local_tz = get_localzone()
26+
self._scheduler = AsyncIOScheduler(timezone=local_tz)
2127
self._scheduler.start()
22-
logger.info(f"{self._name} started")
28+
logger.info(f"{self._name} started with timezone: {local_tz}")
2329
return self._scheduler
2430

2531
def shutdown(self) -> None:
@@ -38,7 +44,8 @@ def add_cron_job(
3844
**job_kwargs: Any,
3945
) -> None:
4046
scheduler = self._get_scheduler()
41-
trigger = CronTrigger.from_crontab(cron_expression)
47+
# 使用调度器的时区创建 CronTrigger
48+
trigger = CronTrigger.from_crontab(cron_expression, timezone=scheduler.timezone)
4249
scheduler.add_job(
4350
func,
4451
trigger=trigger,

runtime/datamate-python/poetry.lock

Lines changed: 8 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

runtime/datamate-python/pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ dependencies = [
4747
"pytest (>=9.0.2,<10.0.0)",
4848
"apscheduler (>=3.11.2,<4.0.0)",
4949
"msoffcrypto-tool (>=6.0.0,<7.0.0)",
50+
"tzlocal (>=5.2,<6.0)",
5051
]
5152

5253

0 commit comments

Comments
 (0)