【问题标题】:python socket Errno 10060python socket Errno 10060
【发布时间】:2012-02-26 19:32:53
【问题描述】:

我正在使用 python 套接字连接到服务器,但有时我明白了:

错误:[Errno 10060] 连接尝试失败,因为已连接 当事人在一段时间后没有正确回应,或建立 连接失败,因为连接的主机没有响应

当我调用 socket.connect 方法时

s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((self._ipv4address, host_port))
try:
    s.connect((dest_ip, dest_port))
except:
    raise

为什么我会看到这个错误?我该如何解决这个问题?

【问题讨论】:

  • 可能是因为服务器在一段时间后没有正确响应...
  • 但我确定服务器没有问题(如果这就是你的意思),我正在尝试加载一个网站,该网站在不使用我的程序的情况下从浏览器正确打开,唯一的问题是它有点大。
  • 您确定它不会在您的浏览器中有时发生吗?由于 10060 似乎是一个超时错误,服务器是否可能在接受连接时非常慢(忙碌的男孩)并且您的浏览器具有更高的超时阈值?你真的需要将套接字绑定到本地地址吗? (我可能认为有时可能是一个原因。)
  • @tomasz 我在尝试连接谷歌时遇到同样的错误,当我不绑定套接字时也会发生同样的错误

标签: python sockets


【解决方案1】:

您不需要绑定套接字(除非远程服务器期望传入套接字) - 这实际上是连接的要求是非常罕见的。

如果您需要旋转表单,请使用urllib2mechanize,而不是使用套接字打开网站。他们管理 cookie、会话、页面状态等。要容易得多。

另外,如果您无法连接..不要放弃!再试一次,有些网站可能很难回应。有些人可能会在一段时间内没有响应 - 更好地处理它。不要仅仅引发错误,而是使用 exponential backoff 装饰器包装您的连接方法。

【讨论】:

  • 指数退避似乎有效,不知道那种模式......非常感谢队友:)
猜你喜欢
  • 2011-10-22
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-07
  • 1970-01-01
相关资源
最近更新 更多