Django中eventlet端口配置冲突及地址含义的技术问询
问题解答
1. runserver指定的8001端口确实被忽略了
你在wsgi.py里直接硬编码了eventlet.wsgi.server(eventlet.listen(('', 8000)), application),这相当于手动接管了服务器的启动逻辑——当你执行python3 manage.py runserver 0.0.0.0:8001时,Django默认的开发服务器启动流程被你自定义的eventlet服务器配置完全覆盖了。
简单来说:runserver命令的端口参数是给Django自带开发服务器用的,但你现在实际启动的是eventlet的WSGI服务器,它只会严格遵守代码里指定的8000端口,根本不会读取runserver命令里的端口参数。
2. ('', 8000)和0.0.0.0:8000功能完全等价
在Python的socket编程语境下,把主机地址设为空字符串'',和设为0.0.0.0是同一个意思:表示绑定到当前服务器的所有可用网络接口(包括本地回环网卡和公网网卡)。所以这两种写法在功能上没有任何区别,都能让你的服务被局域网或公网的其他设备访问到。
内容的提问来源于stack exchange,提问作者sof-03
相关产品推荐
相关产品推荐

