Files
ProxyPool/script/start.bat

96 lines
2.6 KiB
Batchfile

@echo off
chcp 65001 >nul
echo === ProxyPool Startup ===
echo.
set "ROOT_PATH=%~dp0.."
set "BACKEND_PORT=9949"
set "FRONTEND_PORT=9948"
REM 1. Clean processes on ports
echo [1/4] Cleaning old processes...
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%BACKEND_PORT%" ^| findstr "LISTENING"') do (
taskkill /F /PID %%a >nul 2>&1
echo Stopped port %BACKEND_PORT% (PID: %%a)
)
for /f "tokens=5" %%a in ('netstat -ano ^| findstr ":%FRONTEND_PORT%" ^| findstr "LISTENING"') do (
taskkill /F /PID %%a >nul 2>&1
echo Stopped port %FRONTEND_PORT% (PID: %%a)
)
echo Cleanup complete!
echo.
REM 2. Start Backend
echo [2/4] Starting backend (FastAPI)...
if exist "%ROOT_PATH%\venv\Scripts\python.exe" (
set "PYTHON_PATH=%ROOT_PATH%\venv\Scripts\python.exe"
echo Using venv
) else (
set "PYTHON_PATH=python"
echo Using system Python
)
cd /d "%ROOT_PATH%"
set "PYTHONIOENCODING=utf-8"
REM Clear old logs
if exist "%ROOT_PATH%\logs\backend_startup.log" del /f "%ROOT_PATH%\logs\backend_startup.log" >nul 2>&1
if exist "%ROOT_PATH%\logs\backend_error.log" del /f "%ROOT_PATH%\logs\backend_error.log" >nul 2>&1
REM Start backend
start /B "" "%PYTHON_PATH%" -u main.py >"%ROOT_PATH%\logs\backend_startup.log" 2>"%ROOT_PATH%\logs\backend_error.log"
echo Backend started
echo.
REM 3. Wait for backend
echo [3/4] Waiting for backend...
set RETRY_COUNT=0
set BACKEND_READY=0
:WAIT_LOOP
if %RETRY_COUNT% geq 10 goto WAIT_DONE
timeout /t 2 /nobreak >nul
set /a RETRY_COUNT+=1
ping -n 1 127.0.0.1 -w 500 >nul
timeout /t 1 /nobreak >nul
REM Try to connect to backend
powershell -Command "try { $r = Invoke-RestMethod -Uri 'http://127.0.0.1:9949/' -TimeoutSec 2 -ErrorAction Stop; exit 0 } catch { exit 1 }" >nul 2>&1
if %errorlevel% equ 0 (
set BACKEND_READY=1
goto WAIT_DONE
)
echo Waiting... (%RETRY_COUNT%/10)
if exist "%ROOT_PATH%\logs\backend_startup.log" (
for /f "delims=" %%i in ('powershell -Command "Get-Content '%ROOT_PATH%\logs\backend_startup.log' -Tail 1" 2^>nul') do (
echo Log: %%i
)
)
goto WAIT_LOOP
:WAIT_DONE
if %BACKEND_READY% equ 0 (
echo.
echo Backend failed to start!
echo Check error log: %ROOT_PATH%\logs\backend_error.log
pause
exit /b 1
)
echo Backend is ready!
echo.
REM 4. Start Frontend
echo [4/4] Starting frontend (Vite)...
start /B "" cmd /c "cd /d "%ROOT_PATH%\frontend" && npm run dev" >nul 2>&1
echo Frontend started
echo.
echo === All services started ===
echo Backend: http://127.0.0.1:9949
echo Frontend: http://localhost:9948
echo.
echo Please open frontend in browser
timeout /t 5 >nul