Thomas DeBroux
10/15/2025, 3:29 PMschedules:
- cron: "30-59 8 * * 1-5"
timezone: America/Chicago
active: '{{ prefect.blocks.string.active-status }}'
- cron: "* 9-14 * * 1-5"
timezone: America/Chicago
active: '{{ prefect.blocks.string.active-status }}'
- cron: "0-30 15 * * 1-5"
timezone: America/Chicago
active: '{{ prefect.blocks.string.active-status }}'
This allows my flow to run starting at 8:30am every minute until 3:30pm Monday-Friday.
I am seeing that flows scheduled to run just after 9:00am are running late, sometimes up to 10 minutes late. Why is it that my flow is running late when it comes to scheduling switch between the first cron schedule and the second?Marvin
10/15/2025, 3:29 PMMarvin
10/15/2025, 3:33 PM* 8-15 * * 1-5) and no-op in your flow outside 830–1530. This avoids schedule-boundary churn and lets workers prefetch consistently.
- Increase worker readiness to reduce pickup delays:
- Increase worker prefetch/lookahead so runs are fetched before they’re due.
- Ensure worker poll interval isn’t too long.
- Scale workers and/or increase your work pool concurrency if you see a 9:00 surge.
- Keep clocks and timezones clean:
- Make sure the deployment schedules have a timezone (you already do) and worker machines have correct system time (NTP).
- Watch for limits/backlog:
- Check deployment/pool concurrency limits and tags; if they constrain to 1 and your flow duration > 60s, minute-by-minute runs will inevitably queue.
- Check for other deployments in the same pool firing at 9:00.
Helpful docs
- Schedules in Prefect 3
- Workers, polling, and prefetching
If you can share:
- Whether you’re on Cloud or self-hosted
- A screenshot of one late run showing Scheduled start / Created / Start times
- Your work pool type, number of workers, and any concurrency limits
…I can pinpoint whether this is scheduler-run-creation jitter at the boundary or worker pickup/capacity, and suggest the exact changes to make it on-time.