python:[Errno 10054]远程主机强行关闭现有连接

时间:2012-01-11 05:54:16

标签: python twitter web-crawler

我正在使用Twitter-py编写python来抓取Twitter空间。我已经将爬虫设置为在每次请求api.twitter.com之间休眠一会儿(2秒)。但是,经过一段时间的运行(大约1),当Twitter的速率限制尚未超过时,我收到了这个错误。

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

此问题的可能原因是什么以及如何解决?

我搜索过并发现由于许多请求,Twitter服务器本身可能会强制关闭连接。

非常感谢你。

4 个答案:

答案 0 :(得分:10)

这可能是由于连接的双方不同意在保持连接期间连接是否超时。 (您的代码尝试重新使用连接,就像服务器关闭它一样,因为它已经空闲了太长时间。)您基本上应该只是通过新连接重试该操作。 (我很惊讶您的图书馆不会自动执行此操作。)

答案 1 :(得分:5)

有很多原因,例如

  • 服务器和客户端之间的网络链接可能暂时关闭。
  • 耗尽系统资源。
  • 发送格式错误的数据。

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

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

答案 2 :(得分:4)

我知道这是一个非常老的问题,但可能是您需要设置请求标头。这为我解决了。

例如'user-agent','accept'等。以下是user-agent的示例:

url = 'your-url-here'
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36'}
r = requests.get(url, headers=headers)

答案 3 :(得分: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。继续运行代码多次。