Prompt
I'm trying to move slow work off my request path and need a recommendation for durable background job processing
Latest observation
Oct 2, 2026
OpenAI APIWeb search: off
If you want durable background job processing—especially to move slow work off the request path—the safest recommendation is usually:
Best general choice: a real job queue with durable storage
Use a queue-backed worker system rather than in-process threads/tasks.
Strong options by stack
- Python
- Celery with Redis or RabbitMQ
- RQ for simpler needs
- Dramatiq as a modern alternative
- Node.js
- BullMQ with Redis
- Agenda if you want MongoDB-backed jobs
- Ruby
- Sidekiq with Redis
- Java / JVM
- Spring + RabbitMQ/Kafka
- Quartz for scheduled jobs, not ideal as a generic durable queue
- .NET
- Hangfire for persistent background jobs
- Go
- Use a queue like NATS JetStream, RabbitMQ, SQS, or Kafka, with worker processes
What “durable” should mean
For request-path offloading, you want:
- Jobs persisted before acknowledging the request
- Retries with backoff
- Idempotent processing
- Dead-lettering / failure handling
- Separate worker processes
- Observability: retries, lag, failure rates, job history
My practical recommendation
If you want something reliable and common:
- Celery + RabbitMQ if you’re in Python and need stronger queue semantics
- Sidekiq if you’re on Ruby
- Hangfire if you’re on .NET
- BullMQ if you’re on Node.js and Redis is already acceptable
- SQS + worker service if you want managed durability and less ops
If you’re trying to keep it simple
A good minimal pattern is:
- Web request validates input
- Persist a “job record” in your DB
- Enqueue job or let workers poll the DB/outbox
- Return
202 Acceptedwith job ID - Worker processes job asynchronously
- Client checks status via API or webhook
This is especially good if you need:
- transactional consistency
- auditability
- recovery if the queue is temporarily unavailable
Avoid
- In-memory queues inside the web process
- Fire-and-forget threads/tasks from request handlers
- Anything that disappears on process restart unless that’s acceptable
My quick default pick
If you didn’t mention a language, I’d recommend:
- SQS + worker service for managed durability and simplicity, or
- RabbitMQ + workers if you want more control and portability
If you tell me your language/framework and whether you already run Redis, RabbitMQ, Kafka, or a cloud platform, I can give you a much more specific recommendation.