-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_server.ps1
More file actions
78 lines (66 loc) · 1.8 KB
/
run_server.ps1
File metadata and controls
78 lines (66 loc) · 1.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#!/usr/bin/env pwsh
# Smart server launcher - Automatically kills existing process on port 8000
param(
[int]$Port = 8000,
[switch]$NoReload
)
function Get-ProcessOnPort {
param([int]$Port)
try {
$processes = Get-NetTCPConnection -LocalPort $Port -ErrorAction SilentlyContinue |
Select-Object -ExpandProperty OwningProcess -Unique
return $processes
}
catch {
return $null
}
}
function Kill-ProcessOnPort {
param([int]$Port)
$pids = Get-ProcessOnPort -Port $Port
if ($pids) {
foreach ($p in $pids) {
try {
Write-Host "Killing process $p on port $Port..."
Stop-Process -Id $p -Force -ErrorAction Stop
Start-Sleep -Milliseconds 500
Write-Host "Process killed, port $Port released"
return $true
}
catch {
Write-Host "Failed to kill process $p"
}
}
}
return $false
}
# Main
Write-Host "=========================================="
Write-Host "SMART SERVER LAUNCHER"
Write-Host "=========================================="
# Check port
$pids = Get-ProcessOnPort -Port $Port
if ($pids) {
Write-Host "Port $Port is in use, killing..."
Kill-ProcessOnPort -Port $Port
Start-Sleep -Seconds 1
}
Write-Host "Port $Port is free"
Write-Host "Starting server..."
Write-Host ""
# Build args
$uvicornArgs = @(
"app:app",
"--host", "0.0.0.0",
"--port", $Port.ToString()
)
if (-not $NoReload) {
$uvicornArgs += "--reload"
}
Write-Host "=========================================="
Write-Host "Server: http://localhost:$Port"
Write-Host "Press CTRL+C to stop"
Write-Host "=========================================="
Write-Host ""
# Start
& python -m uvicorn @uvicornArgs