Django本地服务器突发异常:Mac OS X下localhost:8000无法访问怎么调试?
嘿,我之前在Mac上也碰到过Django服务器突然卡着连不上的情况,给你分享几个我当时排查的步骤,应该能帮你定位问题:
1. 先确认Django服务器真的在正常跑
- 盯着你启动服务器的终端窗口看,有没有报错日志?比如数据库连接失败、代码语法错误这些,都会让服务器直接卡住没法处理请求。如果有红色的错误信息,先把那些问题解决掉。
- 试试按
Ctrl+C停掉服务器,重新运行python manage.py runserver,仔细看启动过程的输出,有没有异常提示。
2. 检查8000端口是不是被其他程序占了
Mac上经常有后台程序悄悄占用8000端口,导致Django虽然启动了但没法监听:
- 打开终端,运行
lsof -i :8000,这个命令会列出所有占用8000端口的进程。 - 如果有结果,找到对应的PID(进程ID),然后用
kill -9 [PID]把那个进程杀掉,再重启Django试试。 - 嫌麻烦的话,直接换个端口启动:
python manage.py runserver 8080,然后访问localhost:8080,如果能打开,那肯定是端口被占用的问题。
3. 排除浏览器本身的问题
有时候不是服务器的锅,是浏览器缓存或插件搞的鬼:
- 用无痕模式/隐私模式打开
localhost:8000,如果能正常访问,说明是缓存或者插件的问题,清理下浏览器缓存或者禁用插件试试。 - 换个浏览器试试,比如从Chrome切到Safari或Firefox,排除单个浏览器的故障。
4. 检查最近的代码改动
你最近有没有改项目代码?比如加了新的中间件、视图函数,或者改了settings.py?
- 看看是不是在某个视图里写了死循环,或者调用了会阻塞的代码(比如无限等待某个外部资源),导致请求一直挂着。可以先注释掉最近加的代码,重启服务器试试。
- 核对下
settings.py里的ALLOWED_HOSTS,虽然本地访问一般不会有问题,但如果不小心改成了特定域名,也可能导致请求被拒绝,改成ALLOWED_HOSTS = ['localhost', '127.0.0.1']试试。
5. 排查Mac的网络设置
- 试试访问
127.0.0.1:8000而不是localhost:8000,有时候localhost的DNS解析出问题了,直接用IP地址绕开解析环节。 - 检查
/etc/hosts文件,确保localhost指向正确的IP。运行cat /etc/hosts,应该能看到127.0.0.1 localhost和::1 localhost这两行,如果没有的话,用sudo nano /etc/hosts编辑添加(编辑完按Ctrl+O保存,Ctrl+X退出)。 - 试试重置网络:比如断开再重新连接WiFi/以太网,或者重启路由器。
6. 其他可能的干扰因素
- 有没有开VPN或者代理?有时候代理会拦截本地请求,关掉VPN和代理再试试。
- 检查Mac的防火墙设置,在「系统设置-网络-防火墙」里,确保Django对应的Python进程被允许通过防火墙。
内容的提问来源于stack exchange,提问作者nz_21




