将SRV DNS记录与python请求库一起使用

时间:2016-09-30 15:49:44

标签: python dns python-requests consul

是否可以让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')

2 个答案:

答案 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