Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python请求-ConnectionError-超过最大重试次数_Python_Post_Https - Fatal编程技术网

Python请求-ConnectionError-超过最大重试次数

Python请求-ConnectionError-超过最大重试次数,python,post,https,Python,Post,Https,我正在使用rauth和请求调用BeatPortAPI。调用正常,但我偶尔会遇到以下错误ConnectionError:HTTPSConnectionPool(host='oauth-api.beatport.com',port=443):url超过了最大重试次数 这是回溯 Traceback (most recent call last): File "<console>", line 1, in <module> File "scraper/songlist_t

我正在使用rauth和请求调用BeatPortAPI。调用正常,但我偶尔会遇到以下错误
ConnectionError:HTTPSConnectionPool(host='oauth-api.beatport.com',port=443):url超过了最大重试次数

这是回溯

Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "scraper/songlist_top100.py", line 88, in <module>
    'sortBy': 'releaseDate ASC'})
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 347, in get
    return self.request('GET', url, **kwargs)
  File "C:\Python27\lib\site-packages\rauth\session.py", line 208, in request
    return super(OAuth1Session, self).request(method, url, **req_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 335, in reques
t
    resp = self.send(prep, **send_kwargs)
  File "C:\Python27\lib\site-packages\requests\sessions.py", line 438, in send
    r = adapter.send(request, **kwargs)
  File "C:\Python27\lib\site-packages\requests\adapters.py", line 327, in send
    raise ConnectionError(e)
ConnectionError: HTTPSConnectionPool(host='oauth-api.beatport.com', port=443): 
Max retries exceeded with url: /catalog/3/tracks?perPage=150&
oauth_nonce=xxxxx&oauth_timestamp=xxxxx&facets=artistName%3A
Avicii&oauth_signature_method=HMAC-SHA1&oauth_version=1.0&
oauth_consumer_key=xxxxx&oauth_token=xxxxxx&sortBy=releaseDate+ASC
&oauth_signature=xxxxx%3D&page=3 (Caused by <class 'httplib.BadStatusLine'>: '')

为什么会出现上述错误?

看起来Beatport API过载,有时会过早关闭连接。您的第一组请求很顺利地成功了,是第3页抛出了错误,因为响应是空的

您确实应该将此情况报告给Beatport,但您可以通过指示
请求
模块重试请求来解决此问题:

from requests.adapters import HTTPAdapter

# ....

session = beatport.get_session((access_token, access_token_secret))
session.mount('https://oauth-api.beatport.com', HTTPAdapter(max_retries=5))

如果发生错误,将重试您的请求几次。

您的回溯与代码完全不匹配。服务器给你一个空响应(如中所示,根本没有响应)。@MartijnPieters我忽略了响应部分,认为它与错误无关。我也用响应部分更新了代码。不知道为什么会出现错误,但第3页似乎出现了错误,所以第1页和第2页可能成功了。听起来你需要和Beatport谈谈这个问题,我也是这么想的。它通常是有效的,但我有时会遇到这个错误。有帮助吗?您应该能够调用
session.mount('https://oauth-api.beatport.com,HTTPAdapter(max_retries=5))
就在
会话=
行之后。但是是否可以在
请求的每次重试中添加延迟?@avi:否,但是您可以使用类似于添加延迟的第三方包。
from requests.adapters import HTTPAdapter

# ....

session = beatport.get_session((access_token, access_token_secret))
session.mount('https://oauth-api.beatport.com', HTTPAdapter(max_retries=5))