Scheduling
Run a pipeline once or on a CRON schedule.
Cannectors has two execution modes, picked by whether the input has a
schedule field.
Run once
Without a schedule, cannectors run fires the pipeline exactly once
and exits with code 0 on success, or a non-zero code on failure.
input:
type: httpPolling
endpoint: https://source.example.com/api/orders
dataField: orders
# no schedule → run onceUseful for one-shot syncs, backfills, or CI-driven jobs where an external scheduler (GitHub Actions, Airflow, Argo Workflows) handles the cadence.
Run on a schedule
With a schedule, cannectors run stays alive and triggers the
pipeline on every CRON match.
input:
type: httpPolling
schedule: "*/15 * * * *"
endpoint: https://source.example.com/api/orders
dataField: ordersThe CLI process blocks until interrupted with SIGINT (Ctrl-C) or
SIGTERM (your container runtime stopping the container). Cannectors
finishes the current run before shutting down.
CRON format
Cannectors uses the standard 5-field CRON format:
┌───────────── minute (0–59)
│ ┌───────────── hour (0–23)
│ │ ┌───────────── day of month (1–31)
│ │ │ ┌───────────── month (1–12)
│ │ │ │ ┌───────────── day of week (0–6, Sunday = 0)
│ │ │ │ │
* * * * *| Expression | Meaning |
|---|---|
*/15 * * * * | Every 15 minutes |
0 * * * * | Every hour, on the hour |
0 */6 * * * | Every 6 hours, on the hour |
0 9 * * 1-5 | 9 AM on weekdays |
0 0 1 * * | First day of each month, midnight |
Schedule strings must be at least 9 characters long (this is the only
length validation). The CRON parser is the one from
github.com/robfig/cron,
which is what most Go schedulers use.
Inputs that accept schedule
| Input | schedule |
|---|---|
httpPolling | yes |
soapPolling | yes |
database | yes |
webhook | no — it's a long-running listener instead |
A webhook input doesn't schedule; it starts an HTTP server and waits for callers. The process stays alive the same way a scheduled pipeline does.
Overlap behavior
If a scheduled run is still in flight when the next tick fires, Cannectors skips the next tick and logs a warning. Runs do not overlap. Pick a schedule comfortably longer than your worst-case run time, or shrink the work each run does (smaller pages, cursors).
Production deployment
For scheduled pipelines, run the binary under a process supervisor:
systemd— see Operations · Scheduling in production- Kubernetes Deployment / StatefulSet (one replica)
- Container platforms (ECS, Cloud Run, Fly.io)
The runtime is single-process and single-replica by design — multiple replicas would all fire on the same CRON tick and double-process records.