如何解决10054错误

时间:2014-12-06 16:20:26

标签: python connection response

我正在使用某个网站提供的应用程序定期从网站上收集一些数据,比如每次30秒。 然后将返回的响应记录在数据库中。

我通过导入请求和写代码来使用模块化来捕获异常。 主要功能的代码如下:

def get_response(self):
    try:
       response = requests.get(self.request_url)
       if response.status_code == 200:
          return response.json()
       except Exception as e:
          msg = "Exception is:\n %s \n" % e
          print msg

上述功能在前几个小时内运行良好。 该函数还可以从一些例外中恢复,例如: ('连接中止。',BadStatusLine(“''”,))
要么  ('连接已中止。',错误(10053,'')) 它省略了异常(通过在数据库中记录Null)并继续获得下一个周期的响应。

但是,当包含10054错误时,该功能停止工作。

Exception is:
 ('Connection aborted.', error(10054, '')) 

我检查数据库,发现在10054错误发生之后所有响应都是空的。 我首先猜测网站可能会崩溃,因此没有收到回复。 但是当我手动重启该功能时,它会再次开始响应。 所以这与网站的细分无关。

我在stackoverflow中搜索并找到:Errno 10054远程主机强行关闭现有连接。 但我不知道如何解决它。

请问你能解决一下这个问题吗?(理想情况下) 或者提供一些解决方案来重启功能而无需手动重启? (看起来,一旦我重新启动功能,它就会再次运行。)

提前致谢。

2 个答案:

答案 0 :(得分:9)

网络服务器主动拒绝您的连接。这通常是因为它拥挤,速率限制或认为您正在发起拒绝服务攻击。如果你从服务器得到这个,你应该再睡一会儿再试一次。事实上,如果您在重试之前没有睡觉,那么您就是拒绝服务攻击。礼貌的事情是实施渐进式睡眠,比如(1,2,4,8,16,32)秒。

答案 1 :(得分:0)

你可以试试。它解决了我的 ConnectionResetError 10054 问题。

session = requests.Session()
session.headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.1.2222.33 Safari/537.36",
    "Accept-Encoding": "*",
    "Connection": "keep-alive"
}
response = session.get(self.request_url)