NeonClary
Add watchfiles-based dev hot reload for the backend
c20b679
Raw
History Blame Contribute Delete
1.16 kB
# Backend dev server with WORKING hot reload on Windows.
#
# uvicorn's built-in `--reload` is unreliable on Windows: it detects file
# changes ("Reloading...") but often fails to actually restart the worker,
# so it silently keeps serving stale code. This wraps uvicorn in
# `watchfiles`, which does a clean full process restart on every change.
#
# Usage (from the backend/ folder):
# .\dev.ps1 # app.main:app on 127.0.0.1:7860, watching .\app
# .\dev.ps1 -Port 8000 # different port
# .\dev.ps1 -App pkg.main:app -Watch pkg
#
# Requires `watchfiles` (bundled with uvicorn[standard], or `pip install watchfiles`).
param(
[string]$App = "app.main:app",
[int]$Port = 7860,
[string]$Watch = "app",
[string]$BindHost = "127.0.0.1"
)
$ErrorActionPreference = "Stop"
# Prefer the project venv's interpreter if present.
$py = if (Test-Path ".venv\Scripts\python.exe") { ".venv\Scripts\python.exe" } else { "python" }
Write-Host "watchfiles -> uvicorn $App on http://$BindHost`:$Port (watching .\$Watch)" -ForegroundColor Cyan
& $py -m watchfiles "$py -m uvicorn $App --host $BindHost --port $Port" $Watch