Background jobs, fully managed

You build the actual product.
We manage your background jobs.

RelayWay runs, retries, schedules and observes every background task — so queues, workers and dead-letter handling never become your problem.

Python SDK today · TypeScript & Go coming soon

tasks.py
import relayway

relay = relayway.Client()

@relay.task(retries=3, queue="emails")
def send_welcome_email(user_id: str):
    user = db.users.get(user_id)
    email.send(user.email, template="welcome")

# enqueue from anywhere — RelayWay takes it from here
send_welcome_email.delay(user_id="usr_8Kd92")
live send_welcome_email  312ms
How it works

Three lines from your code to our infrastructure

No brokers to provision, no workers to babysit. Define a task, enqueue it, and watch it run.

1

Define a task

Decorate any function. Set retries, queue and timeout right where the logic lives.

@relay.task(retries=3)
def resize_image(id):
    ...
2

Enqueue it

Call .delay() from anywhere in your app. It returns instantly — no blocking.

resize_image.delay(
  id="img_42",
)
3

We run the rest

RelayWay executes, retries failures, respects concurrency, and surfaces every run in your dashboard.

# queued → running
# → completed ✓
# retried 0/3
Automatic retriesBackoff & dead-letter
Cron & schedulingRun on a timetable
Live observabilityEvery run, traced
Concurrency controlPer-queue limits

Stop babysitting your job queue.

RelayWay is in private preview. Create an account to get started.

Get early access