media-rip/backend
xpltd b86366116a Fix SSE busy-loop (ping=0), keep curl in image, recover zombie jobs on startup
Three bugs causing 100% CPU and container crash-looping in production:

1. sse-starlette ping=0 causes await anyio.sleep(0) busy loop in _ping task.
   Each SSE connection spins a ping task at 100% CPU. Changed to ping=15
   (built-in keepalive). Removed our manual ping yield in favor of continue.

2. Dockerfile purged curl after installing deno, but Docker healthcheck
   (and compose override) uses curl. Healthcheck always failed -> autoheal
   restarted the container every ~2 minutes. Keep curl in the image.

3. Downloads that fail during server shutdown leave zombie jobs stuck in
   queued/downloading status (event loop closes before error handler can
   update DB). Added startup recovery that marks these as failed.
2026-03-21 17:59:24 -05:00
..
app Fix SSE busy-loop (ping=0), keep curl in image, recover zombie jobs on startup 2026-03-21 17:59:24 -05:00
media_rip.egg-info M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
tests Docker self-hosting: fix persistence, add data_dir config 2026-03-19 09:56:10 -05:00
.gitignore M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
pyproject.toml M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
requirements.txt M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00