Schedules
A schedule defines when a job runs. Schedules use cron expressions with full timezone support and configurable behavior for missed executions.
Creating a Schedule
Every schedule requires:
- A job to execute
- A cron expression for timing
- A timezone for evaluating the cron expression
Cron Expressions
Outcron uses standard 5-field cron expressions:
┌───────── minute (0-59)
│ ┌─────── hour (0-23)
│ │ ┌───── day of month (1-31)
│ │ │ ┌─── month (1-12)
│ │ │ │ ┌─ day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *
Examples:
| Expression | Description |
|---|---|
*/5 * * * * | Every 5 minutes |
0 * * * * | Every hour, on the hour |
0 9 * * 1-5 | 9:00 AM, Monday through Friday |
0 0 1 * * | Midnight on the 1st of each month |
30 14 * * 0 | 2:30 PM every Sunday |
Timezone
The cron expression is evaluated in the specified timezone. For example, 0 9 * * * in America/New_York fires at 9:00 AM Eastern, regardless of DST changes.
Timestamps are stored in UTC. The UI displays them using your account timezone preference, or your browser's local timezone when no preference is set. The schedule's next run time is calculated using the schedule's configured timezone.
Misfire Policies
When executions are missed (e.g., the system was down), the misfire policy determines what happens:
| Policy | Behavior |
|---|---|
skip | Missed runs are discarded. Only future runs are scheduled. |
latest_only | Only the most recently missed run is executed. |
catch_up | All missed runs are executed, up to the backfill limit. |
The backfill limit caps how many missed runs catch_up will create, preventing runaway backfills after extended downtime.
Splay
The splay_sec setting is a maximum random start delay. Values are clamped to 0..45, and each scheduled execution receives a random delay in [0,effective_splay_sec]. This prevents many schedules with the same cron expression from firing simultaneously.
Schedule previews show the base cron times plus the effective splay window metadata. They do not predict the exact random delayed time that a future execution will receive.
Pending Timeout
pending_timeout_sec controls how long an execution can remain in the pending state before being expired. Defaults to 300 seconds (5 minutes).
Schedule States
- Active — the schedule fires on its cron expression.
- Paused — the schedule exists but won't create new executions. Pause and resume at any time.
Max Pending
max_pending limits how many executions from this schedule can be in the pending state at once. If the limit is reached, new executions are not created until pending ones are claimed or expire. Default: 3.