Интегрирован wesp в сайт
CI / quality (push) Canceled after 0s

This commit is contained in:
влад
2026-07-17 12:57:18 +03:00
parent 5dfa06ddbe
commit 355c0ef9f1
883 changed files with 194576 additions and 177 deletions
@@ -0,0 +1,75 @@
"""Запуск фоновой проверки обновлений (без автоустановки) при старте процесса."""
from __future__ import annotations
import atexit
import logging
import threading
import time
from typing import Any, Optional
log = logging.getLogger(__name__)
_started = False
def get_auto_updater() -> Any:
"""Singleton AutoUpdater или None, если проверка не инициализирована."""
try:
from update import auto_updater
return auto_updater
except Exception:
return None
def schedule_update_checker(app, *, delay_sec: Optional[float] = None) -> None:
"""Стартует фоновый цикл check_for_updates, если включено в recipes.db."""
global _started
if _started or app.config.get("TESTING"):
return
_started = True
if delay_sec is None:
from app.services.startup_defer import default_startup_delay_sec
delay_sec = default_startup_delay_sec(
"WESP_STARTUP_UPDATE_CHECK_DELAY_SEC", arm_default=20.0, other_default=5.0
)
def _run() -> None:
sec = max(0.0, float(delay_sec or 0))
if sec > 0:
log.info("Проверка обновлений: старт через %.1f с", sec)
time.sleep(sec)
try:
from update import init_auto_updater
init_auto_updater()
except Exception:
log.exception("Не удалось инициализировать проверку обновлений")
threading.Thread(target=_run, daemon=True, name="wesp-update-check-defer").start()
def reload_update_checker() -> None:
"""Перечитать настройки из recipes.db без перезапуска процесса."""
try:
from update import init_auto_updater
init_auto_updater(reload=True)
except Exception:
log.exception("Не удалось перезагрузить проверку обновлений")
def stop_update_checker() -> None:
try:
from update import stop_auto_updater
stop_auto_updater()
except Exception:
log.debug("stop_update_checker: ошибка остановки", exc_info=True)
def register_update_checker_shutdown() -> None:
atexit.register(stop_update_checker)