media-rip/backend/app
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
..
core Docker self-hosting: fix persistence, add data_dir config 2026-03-19 09:56:10 -05:00
middleware Fix ruff lint errors: unused imports, E402 import ordering 2026-03-19 07:27:38 -05:00
models Fix playlist support, session persistence, audio detection, progress errors 2026-03-19 02:53:45 -05:00
routers Fix SSE busy-loop (ping=0), keep curl in image, recover zombie jobs on startup 2026-03-21 17:59:24 -05:00
services Persistent admin settings + new server config fields 2026-03-19 12:11:53 -05:00
__init__.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
dependencies.py M001: media.rip() v1.0 — complete application 2026-03-18 20:00:17 -05:00
main.py Fix SSE busy-loop (ping=0), keep curl in image, recover zombie jobs on startup 2026-03-21 17:59:24 -05:00