Flask 内置开发服务器不支持同时绑定多个 IP 地址;如需实现双网卡高可用监听,必须改用生产级 WSGI 服务器(如 Gunicorn),通过多 --bind 参数实现多地址监听。
flask 内置开发服务器不支持同时绑定多个 ip 地址;如需实现双网卡高可用监听,必须改用生产级 wsgi 服务器(如 gunicorn),通过多 `--bind` 参数实现多地址监听。
Flask 的 app.run() 方法仅接受单个字符串形式的 host 参数(例如 '192.168.1.10'),不支持逗号分隔的 IP 列表(如 '192.168.1.10,192.168.1.11')。这是由其底层 Werkzeug 开发服务器的设计决定的——它本质上是单 socket、单地址监听,无法原生实现多网卡冗余或 failover。
更重要的是,Flask 官方文档明确强调:内置服务器严禁用于生产环境。它缺乏连接管理、进程守护、负载均衡、TLS 卸载等关键能力,且存在安全与稳定性风险。因此,您所期望的“主备网卡自动接管”不应依赖 Flask 自身,而应交由专业的 WSGI 服务器或反向代理层实现。
✅ 推荐方案:使用 Gunicorn 实现多地址监听
Gunicorn 支持通过多个 --bind 参数同时监听不同 IP 和端口,完美适配您的双 NIC 场景:
# 同时监听两个公网网卡 IP(端口均为 5000) gunicorn app:app --bind 192.168.1.10:5000 --bind 192.168.1.11:5000 --workers 4 --timeout 30
? 提示:确保两个 IP 均已正确配置在对应网卡上,并可通过 ip addr show 验证;防火墙(如 ufw 或 firewalld)需放行 5000 端口。
⚠️ 注意事项:
- Gunicorn 不提供自动故障检测与流量切换(即“真 failover”),它只是并行监听;客户端需自行实现重试逻辑(如 HTTP 客户端超时后尝试另一 IP),或前置部署负载均衡器(如 Nginx、HAProxy)实现健康检查 + 自动路由。
- 若需更高可靠性,建议在 Nginx 层配置 upstream 组,启用 health_check 和 max_fails,实现真正的主动探活与故障隔离:
upstream flask_backend { server 192.168.1.10:5000 max_fails=3 fail_timeout=30s; server 192.168.1.11:5000 max_fails=3 fail_timeout=30s; } server { listen 80; location / { proxy_pass http://flask_backend; } } - 请勿修改 app.run() 的 host 参数为列表或逗号字符串——这将直接报错(OSError: [Errno 99] Cannot assign requested address)。
总结:面向生产环境的多网卡高可用,核心在于解耦监听层与应用层。用 Gunicorn(或 uWSGI)承载多地址绑定,用 Nginx 提供智能路由与健康检查,才是符合云原生与运维最佳实践的稳健架构。

















