【发布时间】:2010-04-01 07:28:46
【问题描述】:
我有一个使用 urllib 定期获取 url 的程序,我看到断断续续 像这样的错误:
I/O 错误(套接字错误):[Errno 111] 连接被拒绝。
它在 90% 的时间里都能正常工作,但在其他 10% 的时间里它都失败了。如果在失败后立即重试获取,则成功。我无法弄清楚为什么会这样。我试图查看是否有可用的端口,它们是可用的。任何调试想法?
有关其他信息,堆栈跟踪是:
File "/usr/lib/python2.6/urllib.py", line 203, in open
return getattr(self, name)(url)
File "/usr/lib/python2.6/urllib.py", line 342, in open_http
h.endheaders()
File "/usr/lib/python2.6/httplib.py", line 868, in endheaders
self._send_output()
File "/usr/lib/python2.6/httplib.py", line 740, in _send_output
self.send(msg)
File "/usr/lib/python2.6/httplib.py", line 699, in send
self.connect()
File "/usr/lib/python2.6/httplib.py", line 683, in connect
self.timeout)
File "/usr/lib/python2.6/socket.py", line 512, in create_connection
raise error, msg
编辑 - 谷歌搜索不是很有帮助,我从中得到的是服务器 我有时会拒绝连接,我如何验证它不是我的代码中的错误 真的是这样吗?
【问题讨论】:
-
什么是“我试图查看是否有可用的端口,它们是可用的。”意思是?如果你收到一个 ECONNREFUSED 是肯定的响应 - 在原始套接字层 - 从远程主机说“我听到你在敲门,但没有人在听”;这通常是由于服务器过载造成的。您的重试表明这是暂时的,您的 90/10% 比率也是如此。如何证明它不是你的代码? Telnet 到服务器端口。编写一个 python 套接字层例程来尝试连接并给出命中/拒绝率。