alexp97 commited on
Commit
92cbcc6
·
1 Parent(s): 2e2529a

docs(ejecucion): troubleshooting WinError 10013 + receta para liberar puerto ocupado (§6.1)

Browse files
Files changed (1) hide show
  1. docs/ejecucion.md +23 -1
docs/ejecucion.md CHANGED
@@ -194,7 +194,29 @@ uv run rsconnect deploy shiny ./frontend --name <cuenta> --title AgroVision-MVP
194
  | `Failed to spawn: uvicorn/shiny/pytest` (`os error 5`) | Los shims `.exe` se bloquean en OneDrive | Usar la forma de módulo: `uv run python -m uvicorn ...` / `uv run python -m pytest`. |
195
  | UI muestra "backend no disponible" | El backend (:8000) no está arriba | Levantar primero el backend o usar `.\scripts\dev.ps1`. |
196
  | `POST /api/count` devuelve `503` | Conteo en standby (esperado) | Es el comportamiento en desarrollo. Para probar: `COUNTING_ENABLED=true` + `MODEL_BACKEND=mock` (§3.5). |
197
- | Puerto en uso | Otro proceso ocupa 8000/8001 | Cambiar `--port` o cerrar el proceso. |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
 
199
  ---
200
 
 
194
  | `Failed to spawn: uvicorn/shiny/pytest` (`os error 5`) | Los shims `.exe` se bloquean en OneDrive | Usar la forma de módulo: `uv run python -m uvicorn ...` / `uv run python -m pytest`. |
195
  | UI muestra "backend no disponible" | El backend (:8000) no está arriba | Levantar primero el backend o usar `.\scripts\dev.ps1`. |
196
  | `POST /api/count` devuelve `503` | Conteo en standby (esperado) | Es el comportamiento en desarrollo. Para probar: `COUNTING_ENABLED=true` + `MODEL_BACKEND=mock` (§3.5). |
197
+ | `[WinError 10013]` al arrancar (bind) | El puerto (8000/8001) **ya está ocupado** por otro proceso (típico: un `uvicorn` previo que quedó vivo). En Windows esto se reporta como **10013 (acceso denegado)**, no como 10048 (en uso). | Liberar el puerto (ver **§6.1**) o usar otro `--port`. |
198
+
199
+ ### 6.1 Liberar un puerto ocupado (WinError 10013 en Windows)
200
+
201
+ `[WinError 10013] Intento de acceso a un socket no permitido por sus permisos de acceso` al arrancar **no es un problema de permisos ni de rangos reservados**: el puerto ya está tomado en exclusiva por otro proceso (casi siempre un `uvicorn` anterior con `--reload` que no se cerró). Para liberarlo:
202
+
203
+ ```powershell
204
+ # 1) Ver qué ocupa el puerto (el PID es la última columna)
205
+ netstat -ano | findstr :8000 # usa :8001 para la UI
206
+
207
+ # 2) Identificar el proceso de ese PID
208
+ tasklist /FI "PID eq <PID>"
209
+
210
+ # 3) Matarlo (incluido su árbol de hijos)
211
+ taskkill /F /T /PID <PID>
212
+
213
+ # Atajo: matar TODOS los uvicorn del proyecto de una vez
214
+ Get-CimInstance Win32_Process -Filter "Name='python.exe'" |
215
+ Where-Object { $_.CommandLine -match 'uvicorn' } |
216
+ ForEach-Object { Stop-Process -Id $_.ProcessId -Force }
217
+ ```
218
+
219
+ > **Evita huérfanos:** cierra el servidor con **Ctrl+C** (o cierra su ventana); no lo dejes corriendo entre reinicios. `--reload` deja un proceso supervisor + worker, así que pueden acumularse si solo cierras la terminal a la fuerza. Alternativa rápida: arrancar en otro puerto (`--port 8010`). Verifica que quedó libre repitiendo el paso 1.
220
 
221
  ---
222