36 lines
1.0 KiB
Python
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)
|