diff --git a/netx_api/main.py b/netx_api/main.py index ce5e889..eaebd12 100644 --- a/netx_api/main.py +++ b/netx_api/main.py @@ -815,9 +815,23 @@ def on_startup() -> None: last_error=f"startup_thread_init_failed: {str(exc)[:180]}", ) try: - _run_startup_alarm_sync_before_ws() + + def _startup_alarm_sync_worker() -> None: + try: + _run_startup_alarm_sync_before_ws() + except Exception as exc: + _schedule_log.exception("startup: alarm sync before WSS failed: %s", exc) + complete_startup_alarm_sync_gate() + + # Do not block HTTP /health on slow UME REST pull; WSS waits on startup_alarm_sync_gate. + t_startup_sync = threading.Thread( + target=_startup_alarm_sync_worker, + name="ume-startup-alarm-sync", + daemon=True, + ) + t_startup_sync.start() except Exception as exc: - _schedule_log.exception("startup: alarm sync before WSS failed: %s", exc) + _schedule_log.exception("startup: alarm sync thread init failed: %s", exc) complete_startup_alarm_sync_gate() try: if bool(getattr(settings, "ume_sync_alarms_current_enabled", True)): diff --git a/scripts/start_netx.ps1 b/scripts/start_netx.ps1 index 6bb4c60..f49d41d 100644 --- a/scripts/start_netx.ps1 +++ b/scripts/start_netx.ps1 @@ -93,7 +93,7 @@ function Show-LogTail { } function Test-NetxApiListening { - param([string]$HostName, [int]$LocalPort, [int]$WaitSec = 12) + param([string]$HostName, [int]$LocalPort, [int]$WaitSec = 45) $deadline = (Get-Date).AddSeconds($WaitSec) while ((Get-Date) -lt $deadline) { try { @@ -135,8 +135,9 @@ if ($Background) { Show-LogTail -Path $logFile exit 1 } - if (-not (Test-NetxApiListening -HostName $BindHost -LocalPort $Port)) { - Write-Host "[ERR] Port $Port not listening /health not OK within 12s (PID may still be starting or stuck on DB)." -ForegroundColor Red + $healthWaitSec = 45 + if (-not (Test-NetxApiListening -HostName $BindHost -LocalPort $Port -WaitSec $healthWaitSec)) { + Write-Host "[ERR] Port $Port not listening /health not OK within ${healthWaitSec}s (process may be stuck on DB or schema migration)." -ForegroundColor Red Show-LogTail -Path $errFile Show-LogTail -Path $logFile exit 1