# 습관 트래커 서버를 상시 실행하기 위한 스크립트. # Windows 작업 스케줄러 등록 시 이 스크립트를 대상으로 지정한다 (--reload 없이, conda activate 없이 # 대상 conda 환경의 python.exe를 직접 호출해 셸 활성화 없는 예약 작업에서도 안정적으로 동작하게 한다). $ProjectRoot = Split-Path -Parent $PSScriptRoot Set-Location $ProjectRoot $PythonExe = Join-Path $env:USERPROFILE "anaconda3\envs\py_web\python.exe" if (-not (Test-Path $PythonExe)) { Write-Error "conda 환경의 python.exe를 찾을 수 없습니다: $PythonExe (경로를 확인하세요)" exit 1 } $LogDir = Join-Path $ProjectRoot "logs" if (-not (Test-Path $LogDir)) { New-Item -ItemType Directory -Path $LogDir | Out-Null } $LogFile = Join-Path $LogDir ("server_{0}.log" -f (Get-Date -Format "yyyyMMdd")) # 네이티브 프로세스의 stderr(uvicorn의 INFO 로그 포함)를 PowerShell 5.1에서 *>>로 직접 리다이렉션하면 # 각 줄이 NativeCommandError로 감싸져 $ErrorActionPreference=Stop과 충돌해 즉시 종료되는 문제가 있어 # ErrorActionPreference를 건드리지 않고 기본값(Continue)으로 둔 채 리다이렉션한다. & $PythonExe -m uvicorn app.main:app --host 0.0.0.0 --port 8000 *>> $LogFile