2012-01-11 289 views
26

我正在写python使用Twitter-py来抓取Twitter空间。我已将抓取工具设置为在api.twitter.com的每个请求之间休眠一段时间(2秒)。然而,在运行一段时间(大约1)后,当Twitter的速率限制尚未超过时,我得到了这个错误。python:[Errno 10054]一个现有的连接被远程主机强行关闭

[Errno 10054] An existing connection was forcibly closed by the remote host. 

这个问题有什么可能的原因以及如何解决这个问题?

我已经搜遍并发现Twitter服务器本身可能会强制关闭连接,因为有很多请求。

非常感谢您提前。

回答

8

这可能是由于连接的两端不同意连接超时或不连接期间是否存在。 (你的代码试图重新使用连接,就像服务器关闭连接一样,因为它已经被闲置太久了。)你应该基本上只是通过一个新连接重试操作。 (我很惊讶你的库不会自动执行此操作。)

+1

我有同样的问题。使用瓶库,并使用httplib发送。我无法真正发送重试,因为原始调用已在服务器上执行。当我尝试读取响应数据时,连接关闭。这种情况不是一直发生,通常当我只是通过请求发送垃圾邮件时。你知道我可以调整的任何参数使通信稳定吗? – 2013-11-12 14:47:52

+1

@RomanHwang你可能需要一种方法来检查以前的操作而不重复它,或者你需要使你的操作[幂等](http://stackoverflow.com/questions/1077412/what-is-an-idempotent-operation) 。 – 2013-11-12 20:43:35

+1

感谢您的提示。我也发现了为什么我经常得到错误的原因。这是因为瓶子默认开发服务器的实现。它是单线程的,不适合一次处理太多的请求。 – 2013-11-21 15:23:53

4

有很多原因,如

  • 服务器和客户端之间的网络连接可能会暂时下降。
  • 用完了系统资源。
  • 发送格式错误的数据。

要详细检查问题,可以使用Wireshark。

或者您可以重新请求或重新连接。

+0

雅,刚刚运行请求再次为我工作= / – Andrew 2016-05-17 19:42:55

0

对于我来说,当试图连接到SAP Hana数据库时出现这个问题。当我得到这个错误,

OperationalError: Lost connection to HANA server (ConnectionResetError(10054, 'An existing connection was forcibly closed by the remote host', None, 10054, None))

我试图运行连接的代码(下面提到),它创建该错误,再次和它的工作。

 

    import pyhdb 
    connection = pyhdb.connect(host="example.com",port=30015,user="user",password="secret") 
    cursor = connection.cursor() 
    cursor.execute("SELECT 'Hello Python World' FROM DUMMY") 
    cursor.fetchone() 
    connection.close() 

这是因为服务器拒绝连接。它可能需要您等待一段时间,然后重试。尝试通过注销关闭Hana Studio,然后重新登录。继续运行代码多次。

相关问题