Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求库未解析非权威dns查找_Python_Dns_Python Requests_Coredns_C Ares - Fatal编程技术网

Python请求库未解析非权威dns查找

Python请求库未解析非权威dns查找,python,dns,python-requests,coredns,c-ares,Python,Dns,Python Requests,Coredns,C Ares,我有一个python gunicorn web应用程序,当我尝试使用coredns缓存解析内部dns名称时,该应用程序会抛出以下错误: raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPConnectionPool(host='lb.consul.local', port=80): Max retries exceeded with url: /hello/ (Caused b

我有一个python gunicorn web应用程序,当我尝试使用coredns缓存解析内部dns名称时,该应用程序会抛出以下错误:

raise ConnectionError(e, request=request)\nrequests.exceptions.ConnectionError: HTTPConnectionPool(host='lb.consul.local', port=80): 
Max retries exceeded with url: /hello/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f414d5259b0>: 
Failed to establish a new connection: [Errno -2] Name or service not known',))"
编辑太平洋标准时间2月20日上午8:50

如果我立即背对背地运行python shell,我就能够在机器内部用python shell复制它:

>>> import socket
>>> socket.getaddrinfo('lb.consul.local', 80, 0, socket.SOCK_STREAM)
[(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.10.9.0', 80))]
>>> socket.getaddrinfo('lb.consul.local', 80, 0, socket.SOCK_STREAM)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
同样,失败的响应丢失
aa

编辑太平洋标准时间2月20日下午6:05

再过几个小时,我就解决了这个问题,通过这个PR在coredns中禁用了负缓存:


这似乎解决了问题。但是,我仍然不知道是什么原因导致来自coredns缓存的那些负面ipv6查询结果在套接字库中导致异常,而显然是ipv4正在解析。您确定您的系统配置为使用此名称服务器,并且Python应用程序使用它吗
qr rd
标志没有问题,问题不是答案不权威(当从递归名称服务器的缓存中出来时,它永远不会是权威的)。您确定您的系统配置为使用此名称服务器并且Python应用程序使用它吗
qr-rd
标志很好,问题不在于答案不是权威性的(当从递归名称服务器的缓存中出来时,答案永远不会是权威性的)。
root@server-test-7bff545c5b-42ln5:/app# cat /etc/resolv.conf
nameserver 172.1.0.54
search nstest.svc.cluster.local svc.cluster.local cluster.local 
ec2.internal
options ndots:5
>>> import socket
>>> socket.getaddrinfo('lb.consul.local', 80, 0, socket.SOCK_STREAM)
[(<AddressFamily.AF_INET: 2>, <SocketKind.SOCK_STREAM: 1>, 6, '', ('172.10.9.0', 80))]
>>> socket.getaddrinfo('lb.consul.local', 80, 0, socket.SOCK_STREAM)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.6/socket.py", line 745, in getaddrinfo
    for res in _socket.getaddrinfo(host, port, family, type, proto, flags):
socket.gaierror: [Errno -2] Name or service not known
2019-02-20T16:35:21.688Z [INFO] 172.10.112.60:41539 - 6366 "AAAA IN lb.consul.local. udp 57 false 512" NOERROR qr,aa,rd 134 0.003542729s
2019-02-20T16:35:21.717Z [INFO] 172.10.112.60:58468 - 40098 "AAAA IN lb.consul.local. udp 57 false 512" NOERROR qr,rd 134 0.000064083s