You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask+Gunicorn容器内requests域名解析失败问题求助

问题排查与解决:Docker+Gunicorn部署Flask后API请求DNS解析失败

错误信息

urllib3.exceptions.MaxRetryError: HTTPSConnectionPool(host='ana.gov.br', port=443): Max retries exceeded with url: /hidrowebservice/EstacoesTelemetricas/OAUth/v1 (Caused by NameResolutionError("<urllib3.connection.HTTPSConnection object at 0x7f69d27a6a50>: Failed to resolve 'ana.gov.br' ([Errno -3] Lookup timed out)"))

触发问题的路由代码

@observatorioBp.route("/teste")
def teste():
    url_ana_login = r"https://ana.gov.br/hidrowebservice/EstacoesTelemetricas/OAUth/v1"
    response = requests.get(
        url_ana_login,
        headers={
            "identificador": IDENTIFICATOR_API_ANA,
            "senha": PASSWORD_API_ANA,
        },
    )

    return response.json()

核心矛盾

开发服务器运行正常,Docker容器内交互式shell执行相同请求成功,但Gunicorn启动的Flask应用请求API时出现DNS解析超时。


可能原因及解决方法

1. Gunicorn进程DNS配置继承异常

Docker容器启动时shell的DNS配置正常,但Gunicorn启动的worker进程可能未正确继承容器DNS设置,或存在缓存冲突。
解决方法:

  • 启动Gunicorn时显式指定DNS服务器:
    gunicorn --workers=4 --bind=0.0.0.0:5000 --dns=8.8.8.8 app:app
    
  • 在Dockerfile中添加环境变量强制继承系统DNS配置:
    ENV RESOLV_CONF=/etc/resolv.conf
    

2. Docker网络模式限制

自定义网络或默认bridge网络的DNS配置可能存在隔离问题。
解决方法:

  • 测试时临时使用主机网络(生产环境慎用):
    docker run --network=host your-image-name
    
  • 创建自定义网络并指定DNS服务器:
    docker network create --dns=8.8.8.8 --dns=8.8.4.4 my-network
    docker run --network=my-network your-image-name
    

3. Gunicorn异步Worker兼容性问题

使用gevent等异步worker时,可能存在DNS解析兼容性bug。
解决方法:

  • 切换为同步worker类型:
    gunicorn --workers=4 --bind=0.0.0.0:5000 --worker-class=sync app:app
    
  • 若必须使用异步worker,安装gevent-dns修复解析问题:
    pip install gevent-dns
    

4. 容器内DNS解析工具异常

Gunicorn进程可能未使用系统默认解析工具,或存在缓存异常。
解决方法:

  • 在Dockerfile中安装DNS测试工具,启动前先验证解析:
    RUN apt-get update && apt-get install -y dnsutils
    
    启动脚本中添加前置验证:
    nslookup ana.gov.br
    
  • 清空容器内DNS缓存(系统支持时):
    systemd-resolve --flush-caches
    

内容的提问来源于stack exchange,提问作者user25772975

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 19:19:59