Files
Nexus/server/background/bt_panel_bootstrap_loop.py
T
2026-07-08 22:31:31 +08:00

36 lines
1.0 KiB
Python

"""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)