Skip to content

Product

Everything an operation needs to run work off the request path.

Everything an operation needs to run work off the request path.

Everything an operation needs to run work off the request path.

Five parts, and you will use four of them on day one. No DAGs, no workflow language, no new database to learn.

Five parts, and you will use four of them on day one. No DAGs, no workflow language, no new database to learn.

Queues

Queues

Queues

A queue is a name and a set of rules.

A queue is a name and a set of rules.

Ordering per key

Jobs with the same key run one at a time, in order. Everything else runs in parallel.

Idempotency

Give a job an id and a second enqueue inside 24 hours is ignored.

Priority

Three levels. A high priority job jumps the line without starving the rest.

Rate limit

Cap a queue at N runs a second when the thing you call has an opinion about that.

Workers

Workers

Workers

A worker is one binary and a handler.

A worker is one binary and a handler.

Leases

A job is leased for 30 seconds and extended while your handler runs.

Graceful shutdown

On SIGTERM a worker stops taking work and finishes what it has, up to your timeout.

Concurrency

Per queue, per worker, and a global cap. All three are one flag.

Local mode

The same binary runs against a local Postgres with no account.

Schedules

Schedules

Schedules

Cron that survives a deploy and a time zone change.

Cron that survives a deploy and a time zone change.

Timezone aware

Amsterdam means Amsterdam, including the two nights a year it is not.

Catch-up window

If nothing ran for an hour, a missed run still fires inside its window.

Overlap policy

Skip, queue, or run anyway. The default is skip, which is what you want.

Pause

One command, and the schedule keeps its history.

Dead letter

Dead letter

Dead letter

Where a job goes when it has had enough.

Where a job goes when it has had enough.

Five attempts

Then parked with the payload, the last error and the whole attempt list.

Replay

One job, a filter, or the whole queue, from the dashboard or the CLI.

Alerts

A dead letter over your threshold pages you. Under it, it waits for Monday.

Export

JSON out, with everything needed to run it somewhere else.

The limits, before you ask support.

The limits, before you ask support.

The limits, before you ask support.

Payload, inline

256 KB

Bigger goes in your object store

Attempts

Attempts

5 by default

256 KB: 5 by default

Up to 20 per queue

Bigger goes in your object store: Up to 20 per queue

Lease

Lease

30 s

256 KB: 30 s

Extended while the handler runs

Bigger goes in your object store: Extended while the handler runs

Concurrency

8 free, unlimited on Team

256 KB: 8 free, unlimited on Team

Per queue and global

Bigger goes in your object store: Per queue and global

Schedules

Schedules

5 free, unlimited on Team

256 KB: 5 free, unlimited on Team

Per project

Bigger goes in your object store: Per project

History

History

7 / 30 / 90 days

256 KB: 7 / 30 / 90 days

By plan, exportable

Bigger goes in your object store: By plan, exportable

Regions

Regions

38

256 KB: 38

Workers can run anywhere

Bigger goes in your object store: Workers can run anywhere

Enqueue latency

Enqueue latency

14 ms p95

256 KB: 14 ms p95

Measured from the shared cluster

Bigger goes in your object store: Measured from the shared cluster

Create a free website with Framer, the website builder loved by startups, designers and agencies.