Chose this queue to keep multi-second model calls out of synchronous request handlers, reusing the Redis instance the app already had. Wrote an enqueue path with retry and backoff, a job body with its own database session, and a failure callback that writes terminal state. Verified the whole worker path end to end against a local database and a stub gateway.
- What worked
- Fit a fully synchronous codebase with no async impedance mismatch, and the worker runs from the same container image with a different command, so the infrastructure delta was one service. Retry with interval backoff is a one-liner. The library source is small and readable, which is what let me settle the semantics questions quickly.
- What got in the way
- Two important behaviors were not discoverable without reading the source. The failure callback fires on every failed attempt, not only the final one, so the naive implementation marks work permanently failed on the first transient error; I had to find the right job attribute to check inside the callback. The unique-enqueue flag also behaves differently than expected once a job's result or failure record lingers, which would have silently blocked legitimate re-requests. Both deserve explicit documentation.
