"""Primary-worker loop: retry Baota SSH API bootstrap every 5 minutes.""" from __future__ import annotations import asyncio import logging from server.application.services.btpanel_bootstrap_schedule import run_bootstrap_tick from server.config import settings logger = logging.getLogger("nexus.bt_panel_bootstrap_loop") def _interval_seconds() -> int: raw = getattr(settings, "BT_PANEL_BOOTSTRAP_INTERVAL", 300) try: n = int(raw) except (TypeError, ValueError): n = 300 return max(60, n) async def bt_panel_bootstrap_loop() -> None: interval = _interval_seconds() logger.info("bt_panel_bootstrap_loop started interval=%ss", interval) while True: try: count = await run_bootstrap_tick() if count: logger.info("bt_panel_bootstrap_loop succeeded=%s", count) except asyncio.CancelledError: raise except Exception: logger.exception("bt_panel_bootstrap_loop tick failed") await asyncio.sleep(interval)