
用 Python 写了个简单的 app ,和几个网站交互,都出现过域名无法解析的异常。
下面是通过 imap 连接腾讯邮箱(imap.exmail.qq.com)时的报错,其实连接其它网站的时候都出现过这类提示,高峰的时候大概 20 分钟异常一次,低的时候一天有 3 ,4 次。
2023-06-07 16:45:17,483 [ERROR][lib_email.py->fetch_email][115] Traceback (most recent call last): File "/opt/app/lib_email.py", line 32, in fetch_email imapClient = IMAPClient(self.imap_server, ssl= True) File "/usr/local/lib/python3.9/site-packages/imapclient/imapclient.py", line 285, in __init__ self._imap = self._create_IMAP4() File "/usr/local/lib/python3.9/site-packages/imapclient/imapclient.py", line 322, in _create_IMAP4 return tls.IMAP4_TLS( File "/usr/local/lib/python3.9/site-packages/imapclient/tls.py", line 44, in __init__ imaplib.IMAP4.__init__(self, host, port) File "/usr/local/lib/python3.9/imaplib.py", line 202, in __init__ self.open(host, port, timeout) File "/usr/local/lib/python3.9/site-packages/imapclient/tls.py", line 49, in open sock = socket.create_connection( File "/usr/local/lib/python3.9/socket.py", line 823, in create_connection for res in getaddrinfo(host, port, 0, SOCK_STREAM): File "/usr/local/lib/python3.9/socket.py", line 954, in getaddrinfo for res in _socket.getaddrinfo(host, port, family, type, proto, flags): socket.gaierror: [Errno -3] Temporary failure in name resolution 我在 Docker 镜像里直接修改过 /etc/resolv.conf 使用 8.8.8.8 ,223.5.5.5 也修改过宿主机的 daemon.json 使用上述 DNS, 但是都没啥效果。
好像是从 4 月份开始的,真的是诡异,不知道大家有没有什么思路去追查或者解决?谢谢
1 wheat0r Jun 7, 2023 不熟悉,听说 alpine 有祖传 dns 问题 |
2 whoosy Jun 7, 2023 确定下相关代码在宿主机上跑有没有问题 |
4 f1ynnv2 OP @whoosy 直觉上感觉应该没问题,不过我来验证一下。我在镜像里和宿主机上一直跑个 ping 写日志,看看下次镜像里 app 出错时,两个 ping 日志是啥情况。 |
5 Judoon Jun 7, 2023 换本地 dns 缓存服务器试试,可能 udp 丢包问题 |
6 jdOY Jun 7, 2023 抓包看看一切都清楚 |
7 yuikns Jun 8, 2023 8.8.8.8 不太牢靠吧。如果国内比较在乎这个问题的话,试试企业的公共 dns 。比如腾讯的 119.29.29.29 |
8 photon006 Jun 8, 2023 我遇到过,干脆内网环境用 adguardhome 自建 dns 服务,启动 docker 容器指向它,现在稳了 docker run -d --name myName --restart=always --init -e TZ=Asia/Shanghai --dns="10.13.1.50" --network=host image |
10 stcQ2G13k9yxep40 Jun 8, 2023 也许是域名本身的问题,反诈中心 96110 最近拦截了很多域名 |
11 f1ynnv2 OP 试了下,在 docker compose 文件里通过 extra_hosts:把用到的几个域名写死,暂时没再遇到这问题了。 不理解这基本的 DNS 解析为啥还老出错,114.114.114.114, 223.5.5.5, 8.8.8.8 都轮番试过。 |
12 guanzhangzhang Jun 17, 2023 你 dns 上有换 doh 之类的非 udp53 试试 |