cannectors

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 once

Useful 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: orders

The 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)
│ │ │ │ │
* * * * *
ExpressionMeaning
*/15 * * * *Every 15 minutes
0 * * * *Every hour, on the hour
0 */6 * * *Every 6 hours, on the hour
0 9 * * 1-59 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

Inputschedule
httpPollingyes
soapPollingyes
databaseyes
webhookno — 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:

The runtime is single-process and single-replica by design — multiple replicas would all fire on the same CRON tick and double-process records.

Cross-references