是否可以让Python请求库解析带有SRV记录的consul域名,并在发出请求时使用正确的IP地址和端口?
例如,假设我在端口8080上运行了IP地址为172.18.0.5的serviceA,并且此服务已在consul中注册。并且假设主机的DNS设置为使用consul来解析查询。我可以提出如下请求:
requests.get('http://serviceA.service.consul')
并将其等同于请求:
requests.get('http://172.18.0.5:8080')
答案 0 :(得分:0)
不,除非你重写requests
,否则你不能。
SRV记录旨在寻找服务
在这种情况下,您已经指示使用http。因此,客户端只会查询serviceA.service.consul
的A或AAAA记录。
答案 1 :(得分:0)
我最后为使用this answer执行此操作的请求编写了一个补丁。由于对请求库的更新,我不得不进行一些更改。此修补程序适用于请求版本2.11.1。
我使用dnspython库来解析SRV记录,并且它希望consul正在侦听DNS请求的IP地址和端口可用作环境变量CONSUL_DNS_IP_PORT。要使用补丁从补丁所在的任何模块导入spring-cloud-config-client
函数,然后调用它。它只会尝试对以PropertySources
结尾的主机使用consul SRV记录,其他主机将定期解析。
这是补丁:
requests_use_srv_records