@@ -88,18 +88,23 @@ async def _start_stream_proxy():
8888 port = int (STREAM_PORT or 3120 )
8989 STREAM_PROXY_SERVER_ENV = os .environ .get ('UNIFIED_PROXY_CONFIG' ) or os .environ .get ('HTTPS_PROXY' ) or os .environ .get ('HTTP_PROXY' )
9090 server .logger .info (f'Starting STREAM proxy on port { port } with upstream proxy: { STREAM_PROXY_SERVER_ENV } ' )
91- server .STREAM_QUEUE = multiprocessing .Queue ()
92- server .STREAM_PROCESS = multiprocessing .Process (target = proxy .start , args = (server .STREAM_QUEUE , port , STREAM_PROXY_SERVER_ENV ))
93- server .STREAM_PROCESS .start ()
94- server .logger .info ('STREAM proxy process started. Waiting for port readiness...' )
95- if await _wait_for_port (port , timeout = 30.0 ):
96- server .logger .info (f'STREAM proxy port { port } is ready.' )
97- else :
98- server .logger .error (f'STREAM proxy port { port } not ready after timeout. Browser may fail to connect.' )
99- if server .STREAM_PROCESS and server .STREAM_PROCESS .is_alive ():
100- server .logger .warning ('STREAM proxy process is alive but port not listening.' )
91+ for attempt in range (3 ):
92+ current_port = port + attempt
93+ server .STREAM_QUEUE = multiprocessing .Queue ()
94+ server .STREAM_PROCESS = multiprocessing .Process (target = proxy .start , args = (server .STREAM_QUEUE , current_port , STREAM_PROXY_SERVER_ENV ))
95+ server .STREAM_PROCESS .start ()
96+ server .logger .info (f'STREAM proxy process started on port { current_port } . Waiting for port readiness...' )
97+ if await _wait_for_port (current_port , timeout = 30.0 ):
98+ server .STREAM_PORT_ACTUAL = current_port
99+ server .logger .info (f'STREAM proxy port { current_port } is ready.' )
100+ if current_port != port :
101+ server .logger .warning (f'STREAM proxy using fallback port { current_port } (requested { port } ).' )
102+ return
101103 else :
102- server .logger .error (f'STREAM proxy process died. Exit code: { server .STREAM_PROCESS .exitcode } ' )
104+ server .logger .warning (f'STREAM proxy port { current_port } not ready, killing process...' )
105+ server .STREAM_PROCESS .terminate ()
106+ server .STREAM_PROCESS .join (timeout = 3 )
107+ server .logger .error (f'STREAM proxy failed to start after 3 attempts.' )
103108
104109async def _initialize_browser_and_page ():
105110 import server
0 commit comments