Python cron heartbeat (dead-man switch)
Ваш cron стал молча не запускаться. Нужен алерт, если скрипт пропустил окно выполнения.
Рецепт
import os, sys, requests
# После каждой успешной итерации cron — пинг heartbeat
HEARTBEAT = os.environ["HEARTBEAT_URL"] # https://enterno.io/hb/<token>
def main() -> None:
# ... ваша работа ...
try:
requests.post(HEARTBEAT, timeout=5)
except requests.RequestException:
pass # не ломаем основной job из-за telemetry
if __name__ == "__main__":
sys.exit(main())
То же самое в Enterno.io
Heartbeat-мониторы Enterno присылают алерт, если ping не пришёл в ожидаемое окно (например ±2 мин к ежечасной задаче). Никаких внешних контейнеров.
Похожие рецепты
cron-сервис жив, но задача (timer disabled, MAILTO=root спам, sh-syntax-error в crontab) не отрабатывала ночью. classic «забыли что вчерашняя ночь дала пустые отчёты».
Самоподписанный скрипт проверяет SSL сертификат и шлёт алерт за 14 дней до expiry.
Контейнер падает по OOM, restart-политика поднимает его обратно — наружу никаких сигналов, пока пользователи не пожаловались.