Delivery recovery

Follow one event through an abandoned lease, receiver failures and a successful retry.

Public demonstration

The sample run

One event. One receiver. Three allowed attempts.

Ready. Takes about four seconds.

  1. Abandoned jobWorker A claims the event, then leaves it unfinished.
  2. Lease expiresWorker B waits for the one-second lease before taking over.
  3. Receiver recoversThe receiver fails twice with HTTP 503, then accepts the event.

Uses the actual Python service and worker with a fixed, in-process receiver.

Delivery log

Live observations
Delivery attempts
—
Receiver records
—
Delivery state
Ready
  1. No run yetStart the sample to inspect lease recovery, retries and the final duplicate check.

Times are measured by the Python runner. Results appear only when each step completes.

What this verifies

A completed run must leave one receiver record and one delivery after the producer submits the same event again. A failed assertion is shown as an error.

Each run gets a temporary SQLite database that is removed afterwards. This demo makes no outbound webhook calls and does not host a persistent queue. PostgreSQL concurrency and HTTPS delivery have separate tests in the repository.