为什么我的Uvicorn服务器突然出现[WinError 10013]套接字访问权限被禁止错误
解决FastAPI启动uvicorn时报WinError 10013的方案
该报错为Windows系统级套接字访问权限拒绝,绝大多数场景是uvicorn默认绑定的8000端口被其他进程占用、被系统服务预留,或是被防火墙拦截。
方案1:快速换端口验证
直接在启动命令中指定其他未被占用的端口,比如8001:uvicorn main:app --reload --port 8001
如果换端口后可正常启动,证明为原8000端口问题,可继续往下排查,也可直接使用新端口继续开发。
方案2:释放被占用的8000端口
- 打开管理员权限的命令提示符(cmd)或PowerShell
- 执行命令查询占用8000端口的进程PID:
netstat -ano | findstr :8000 - 输出结果最后一列即为对应进程PID,执行以下命令终止该进程(将
<PID>替换为实际查询到的数字):taskkill /PID <PID> /F - 重新执行原uvicorn启动命令即可。
方案3:排查系统端口预留与防火墙规则
如果查询后无进程占用8000端口,大概率是Windows的Hyper-V、WSL2、Docker等服务预留的端口段包含了8000:
- 打开管理员权限的PowerShell,执行命令查看系统预留TCP端口段:
netsh interface ipv4 show excludedportrange protocol=tcp - 若输出列表中包含覆盖8000的端口段,优先选择其他不在预留范围内的端口启动服务即可,调整系统预留端口规则操作复杂度较高,不推荐普通用户操作。
- 也可临时关闭Windows防火墙测试,若关闭后可正常启动,将Python或uvicorn添加到防火墙允许通行列表即可。
注意:所有涉及系统配置的命令都需要使用管理员权限运行,否则会执行失败
内容的提问来源于stack exchange,提问作者Anubhav Anand
相关产品推荐
相关产品推荐

