Background jobs, fully managedYou build the actual product.
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/3Automatic 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