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:
Paulo Victor Cordeiro
2026-06-02 19:07:00 +01:00
committed by GitHub
parent ce7f5dbbdd
commit c3fd969965

View File

@@ -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