fix(cron): validate expression syntax in _validate_schedule_for_add

This commit is contained in:
ferkans-amir
2026-08-03 16:20:22 +08:00
committed by Xubin Ren
parent c6bd5f0075
commit 73a0080484
+9 -2
View File
@@ -75,10 +75,17 @@ def _validate_schedule_for_add(schedule: CronSchedule) -> None:
if schedule.tz and schedule.kind != "cron": if schedule.tz and schedule.kind != "cron":
raise ValueError("tz can only be used with cron schedules") raise ValueError("tz can only be used with cron schedules")
if schedule.kind == "cron" and schedule.tz: if schedule.kind == "cron":
if not schedule.expr or not schedule.expr.strip():
raise ValueError("cron schedule requires a non-empty 'expr'")
try:
from croniter import croniter
croniter(schedule.expr)
except Exception as e:
raise ValueError(f"invalid cron expression '{schedule.expr}': {e}") from None
if schedule.tz:
try: try:
from zoneinfo import ZoneInfo from zoneinfo import ZoneInfo
ZoneInfo(schedule.tz) ZoneInfo(schedule.tz)
except Exception: except Exception:
raise ValueError(f"unknown timezone '{schedule.tz}'") from None raise ValueError(f"unknown timezone '{schedule.tz}'") from None