gendesign/backend/app
lekss361 caa467fb7e fix(worker): periodic zombie cleanup via beat instead of worker_ready
worker_ready signal handler was NOT firing in our setup (verified via
DB breadcrumb after 3 deploys — zero rows of stage='worker_ready' in
nspd_geo_log). Root cause of unreliability unknown — possibly Celery
internals, possibly compose recreate timing. Either way, after every
redeploy users had to manually cancel/resume jobs to keep them moving.

Replace signal-based resume with periodic beat task:
- cleanup_zombies runs every minute (* * * * *)
- Finds nspd_geo_jobs in status running/paused with heartbeat >2 min stale
- Sets status='queued' + apply_async with queue=geo
- Idempotent — if no zombies, no-op

worker_ready handler kept (with FK-fix breadcrumb on NULL job_id) for
diagnostic purposes — if signal ever does fire, we'll have evidence.
2026-05-11 17:02:29 +03:00
..
api fix(api): bulk geo includes all doc_types by default (only_ddu opt-in) 2026-05-11 16:12:58 +03:00
core refactor(nspd): remove Playwright-based scraper, rosreestr2coord = default 2026-05-11 09:21:12 +03:00
models feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00
schemas feat(api,analytics): bulk geo backfill + complex_buildings query 2026-05-11 15:56:17 +03:00
services feat(api,analytics): bulk geo backfill + complex_buildings query 2026-05-11 15:56:17 +03:00
workers fix(worker): periodic zombie cleanup via beat instead of worker_ready 2026-05-11 17:02:29 +03:00
__init__.py init 2026-04-25 13:45:19 +03:00
main.py feat(jobs): centralized job_settings API + DB-driven beat schedule 2026-05-11 15:38:13 +03:00