我有一个使用rest-api与我的服务器通信的python脚本 我正在使用python-requests来处理rest-api 该脚本有一个循环并尝试 - 除了处理错误以使其保持运行。
在centos上,我意外地错误配置了dns并启动了我的脚本。
这是错误:
HTTPConnectionPool(host =' host.com',port = 80):使用url:// rest / url超出了最大重试次数(由NewConnectionError引起(':无法建立新连接) :[Errno -2]名称或服务未知',))
然后我在没有重新启动脚本的情况下正确地重新配置了dns,但是除非重新启动脚本,否则脚本仍然无法正常工作。同样的错误 在像ping这样的dns重新配置之后启动了程序,Web浏览器工作正常。
如果在dns重新配置之前启动ping,则会发生同样的问题,但对于firefox则不会 似乎firefox需要一段时间才能适应新的dns配置。
关于debian,这个问题确实存在 当我正确地重新配置dns时,脚本或其他程序几乎立即开始工作。
centos上的dns有什么特别之处吗? 我的脚本可以在不重新启动的情况下调整新的DNS配置吗?
==========================
python-requests我测试过的版本:
2.11.1,2.12.4,2.13.0 on centos
关于debian的2.11.1,2.12.4
centos版本测试:
6.2,7.3-1611
debian版测试:
debian-sid最新更新
python版本:
2.7.13rc1关于debian
2.7.5 on centos 7.3-1611
2.6.6 on centos 6.2
答案 0 :(得分:0)
通过在glibc中调用__res_init来解决问题。
更多详细信息,请参阅Python not getting IP if cable connected after script has started和http://bugs.sugarlabs.org/attachment/ticket/1940/network.py.patch