# several copies of the app now share one job list — spoolcast

The job list moved out of a file on one machine and into a database with row locks and a lease, so more than one copy of the app can claim work without ever taking the same job twice.

Type: project

Published: 2026-09-11

[Original page](<https://artlu.ai/project/several-copies-of-the-app-now-share-one-job-list-spoolcast>)

[Browse this group](<https://artlu.ai/ai/groups/spoolcast.md>)

Parent project: spoolcast

Series: features

Recorded status: launched

Updated: 2026-09-16T19:16:12.522Z

Technologies: Python, Postgres, Docker, Railway, Cloudflare R2

## Details

**What is it?**
The job list moved out of a file on one machine and into a database, which is what lets more than one copy of the app run at the same time.

**What it does**
- Every engine copy and every render worker claims work from one shared job list
- A claim takes a row lock and holds a lease, so two copies never take the same job
- Cancelling is a flag the runner polls, so a job stops wherever it is running
- Each account gets one turn at a time, so a busy account cannot starve the others
- A busy server answers "please wait" and the app retries, instead of leaving an account dead
- A load test anyone can rerun with one command

**How it works**
Claims use a row lock that skips rows another copy already holds, with a lease so a copy that dies releases its work. Writes to cloud storage compare and set, so a stale copy's push is refused rather than landing over newer work.

**What is not done yet**
Today the copies are separate processes on one server sharing one disk. Running on two machines is still ahead, and a read-only audit on 2026-09-11 listed sixteen places where something kept in one copy's memory or on its disk would not be seen by a second copy or a second person. Three of those were live bugs the night the audit was written, including an admin jobs view that showed every account's jobs rather than your own. The shared job list and the compare-and-set writes are the parts the audit confirmed were already right.

**Built with**
Python, Postgres, Docker on Railway, Cloudflare R2.

## Links

[Site or demo](<https://spoolcast-web.pages.dev/>)


Status and dates describe the published record, not a recent test of an external service. Missing details are not inferred. Public links do not imply an open-source licence or permission to reuse material.

[Directory](<https://artlu.ai/llms.txt>)
