重新连接期间的getaddrinfo行为

时间:2014-02-26 03:07:30

标签: python linux networking getaddrinfo

我注意到python的socket.getaddrinfo()有一些奇怪的行为。

如果我连接到wifi并调用socket.getaddrinfo(),它可以工作(当然可以!):

In [3]: socket.getaddrinfo('charlesleifer.com', 80)
Out[3]: 
[...]

如果我断开连接,那么我将收到错误:

In [4]: socket.getaddrinfo('charlesleifer.com', 80)
    ---------------------------------------------------------
    gaierror                                  Traceback (most
    <ipython-input-2-d333ec6c75af> in <module>()
    ----> 1 socket.getaddrinfo('charlesleifer.com', 80)

最后,如果我重新连接,它将再次起作用。

现在这是奇怪的部分。

如果我启动,请关闭我的wifi,打开一个python终端,并调用socket.getaddrinfo,如预期的那样我将收到与之前相同的错误

In [2]: socket.getaddrinfo('charlesleifer.com', 80)
---------------------------------------------------------
gaierror                                  Traceback (most
<ipython-input-2-d333ec6c75af> in <module>()
----> 1 socket.getaddrinfo('charlesleifer.com', 80)

gaierror: [Errno -2] Name or service not known

但是当我打开wifi时,无论我尝试多少次,我都会继续收到同样的错误!我可以尝试其他主机,它也会失败。

如果我手动将条目添加到我的/etc/hosts文件中,那么它将返回我放在hosts文件中的任何内容。但是,其他请求仍然失败。

这里发生了什么?我很难过。

1 个答案:

答案 0 :(得分:0)

我的一位朋友分享了以下补丁,该补丁手动刷新了解析程序缓存。这为我解决了这个问题。

http://bugs.sugarlabs.org/attachment/ticket/1940/network.py.patch