A job scheduler sounds simple until something goes wrong.
A job enters a queue. A worker picks it up. The worker completes it.
But what if the worker crashes halfway through?
What if two workers pick up the same job?
What if a low-priority job never gets a chance to run?
What if the server restarts while jobs are running?
I built this project specifically to explore those problems.
The system combines a React dashboard, FastAPI API, priority queue, worker pool, retry system, SQLite persistence and recovery logic into one application.