我正在编写python来使用Twitter-py抓取Twitter空间。我已经将抓取器设置为在每次请求api.twitter.com之间休眠一段时间(2秒)。但是,在运行了一些时间(大约1秒)后,当Twitter的速率限制尚未超过时,我得到了这个错误。
[Errno 10054] An existing connection was forcibly closed by the remote host.
此问题的可能原因是什么以及如何解决此问题?
我已经搜索过了,发现Twitter服务器本身可能会由于许多请求而强制关闭连接。
非常感谢你提前。
6条答案
按热度按时间uxh89sit1#
这可能是由于连接的两端在keepalive期间对连接是否超时的意见不一致造成的。(您的代码试图在服务器关闭连接时重用该连接,因为它已经空闲了太长时间。)您基本上应该通过一个新的连接重试该操作。(我很惊讶您的库没有自动执行此操作。)
pepwfjgg2#
我知道这是一个很老的问题,但它可能是你需要设置请求头。
例如'user-agent'、'accept'等。以下是使用用户代理的示例:
q9rjltbz3#
原因很多
要详细检查该问题,可以使用Wireshark.
也可以重新请求或重新连接。
5vf7fwbs4#
对我来说,这个问题是在尝试连接到SAPHana数据库时出现的。当我收到这个错误时,
我试着运行连接的代码(下面提到的),它再次创建了那个错误,它工作了。
这是因为服务器拒绝连接。可能需要您等待一段时间,然后重试。请尝试通过注销并重新登录来关闭Hana Studio。继续运行代码多次。
x7rlezfr5#
在
websocket.run_forever()
中设置**ping_interval = 2
后,出现websocket-client的相同错误*([WinError 10054]远程主机强制关闭了现有连接)I。(有多个线程连接到同一主机。)设置
ping_interval = 10
和ping_timeout = 9
解决了这个问题。可能您需要减少请求数量并停止使主机忙碌**否则它将强制断开您的连接。tct7dpnv6#
我用while try循环修复了它,等待响应设置变量以退出循环。
当连接出现异常时,它会等待五秒钟,然后继续查找来自连接的响应。
我的代码在修复之前,响应失败
HTTPSConnectionPool(host='etc.com', port=443): Max retries exceeded with url: / (Caused by ConnectTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000001E9955A2050>, 'Connection to example.net timed out. (connect timeout=None)'))
修复后,成功响应
response_xml <Response [200]>
:基于Jatin's answer here--“只要这样做,
不客气:)”