Python services dynamically specify cron schedules
Introduced 2026-04-15 · score 0.91
HOW TO USE IT
When a Python cron service in `experimentalServices` needs multiple schedules, set `schedule` to `"<dynamic>"`. At build time Vercel imports and runs its entrypoint, which must return a list of `(entrypoint, cron_schedule)` pairs.
{
"experimentalServices": {
"scheduler": {
"type": "cron",
"entrypoint": "jobs.registry:crontab",
"schedule": "<dynamic>"
}
}
}WHY THIS HELPS
Configure multiple cron jobs for a Python service using schedules determined by its entrypoint.
REQUIREMENTS AND LIMITATIONS
- Version: 51.4.0
- experimentalServices.scheduler.type (required): Set to `"cron"` for a cron service.
- experimentalServices.scheduler.entrypoint (required): Python entrypoint that Vercel imports and runs at build time; it must return a list of `(entrypoint, cron_schedule)` pairs.
- experimentalServices.scheduler.schedule (required): Set to `"<dynamic>"` to use schedules supplied by the entrypoint.
- Prerequisite: To deploy a project using `experimentalServices`, set its framework setting to Services and include `experimentalServices` in `vercel.json`. Services are in private beta and require access granted by request.
- The behavior applies when the schedule for a cron service in `experimentalServices` is `"<dynamic>"`.
- The entrypoint function must return a list of pairs of `(entrypoint, cron_schedule)`.
- The entrypoint is imported and run at build time.
- Docs conflict: Current docs describe the legacy `experimentalServices` model as available while migrating and say new projects should use the `services` model; they do not document dynamic Python cron schedules. https://vercel.com/docs/services/experimental
FIRST-PARTY EVIDENCE
- https://github.com/vercel/vercel/releases/tag/vercel%4051.4.0
- https://github.com/vercel/vercel/pull/15930
- https://vercel.com/docs/services
Check the installed version and the source before using it. Entry JSON