fix: once-schedule comparison uses local time against UTC date (#1349)
When a timezone is configured, `now` is tz-aware local time. The comparison stripped tzinfo with `.replace(tzinfo=None)`, producing naive local time, but `scheduled_date` is stored as naive UTC. For users east of UTC this causes tasks to appear expired prematurely; for users west they linger past due time. Use `_to_utc_naive(now)` to convert to the same reference frame.
This commit is contained in:
committed by
GitHub
parent
ce7f5dbbdd
commit
c3fd969965
@@ -115,7 +115,7 @@ def compute_next_run(schedule: str, scheduled_time: str,
|
||||
return None
|
||||
|
||||
if schedule == "once":
|
||||
if scheduled_date and scheduled_date > (now.replace(tzinfo=None) if tz is not None else now):
|
||||
if scheduled_date and scheduled_date > (_to_utc_naive(now) if tz is not None else now):
|
||||
return scheduled_date
|
||||
return None
|
||||
|
||||
|
||||
Reference in New Issue
Block a user