Стадия 6 — лёгкий /ping и починка healthcheck (docker-compose) #6
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Цель
Healthcheck не должен зависеть от Telegram RPC и обхода ФС: текущий healthcheck сам провоцирует рестарты контейнера и флаки статики.
Полный план: plans/2026-07-05-stability-fix-plan.md
Контекст (что чиним)
curl /rss/vvzvlad_lytdybr?limit=1с timeout 5с: на холодном кэше генерация легко > 5с (throttle 500мс × N + TG-латентность) → autoheal рестартует контейнер посреди докачек → битые temp-файлы больших видео → флаки статики. Замкнутый круг./healthдергаетget_me()и полныйos.walkкэша — тяжёлый и зависает вместе с TG-сессией.Задачи
/ping: без токена, без TG RPC, без os.walk. Отдаётis_connected+ возраст последнего успешного watchdog-probe → 200 если жив, 503 если degraded (не connected И последний успешный probe старшеinterval × failures)TelegramClient— публичный методwatchdog_last_ok_age()(возраст_wd_last_ok_monotonic, None если probe ещё не было)curl -sf http://127.0.0.1:80/ping, interval 5m, timeout 5sГде не наебаться
/pingНЕ должен дёргатьget_me()— иначе вернули ту же проблему (зависание healthcheck вместе с TG-сессией) через другую дверь. Живость TG — работа вотчдога,/pingтолько читает его счётчики./rss/...в прод-healthcheck после выката.age is None) — это НЕ degraded, иначе контейнер зациклится на рестартах при старте (start_period учитывать).DoD
Во время зависшего TG RPC
/pingотвечает мгновенно (503 degraded, но процесс жив); контейнер не рестартится из-за медленной генерации фида.Зависимости: формально нет; максимум пользы после стадий 1–2.
/pingиспользуется в DoD стадии 4.