引发ConnectionError(连接中止,BadStatusLine):使用python和Last.fm API

Rub*_*uby 5 python last.fm

我正在使用python调用Last.fm API来获取用户信息.获取大约7000个用户后会发生此错误:

Traceback (most recent call last):

  File "C:/Python27/My Codes & Data/scanuserinfo_100K_3.py", line 48, in <module>

    r=requests.get(host,params=params)

  File "C:\Python27\requests\api.py", line 60, in get

    return request('get', url, **kwargs)

  File "C:\Python27\requests\api.py", line 49, in request

    return session.request(method=method, url=url, **kwargs)

  File "C:\Python27\requests\sessions.py", line 457, in request

    resp = self.send(prep, **send_kwargs)

  File "C:\Python27\requests\sessions.py", line 569, in send

    r = adapter.send(request, **kwargs)

  File "C:\Python27\requests\adapters.py", line 407, in send

    raise ConnectionError(err, request=request)

ConnectionError: ('Connection aborted.', BadStatusLine("''",))
Run Code Online (Sandbox Code Playgroud)

这是我调用API的代码:

import requests

API_KEY='####my api key input here#####'

host='http://ws.audioscrobbler.com/2.0/'

params={'method':'user.getInfo',

            'user':'###userid input here####',

            'api_key':API_KEY   
    }

r=requests.get(host,params=params)
Run Code Online (Sandbox Code Playgroud)

有人可以帮帮我吗?

yi *_*eng 1

这可能与他们的 API 限制有关,因为他们希望您不要进行超过 5 次调用/秒 * 60 秒/分钟 * 5 分钟 = 1500 次调用/ 5 分钟

http://www.last.fm/api/tos

4.4 您将根据随 Web 服务响应发送的 HTTP 标头实施适当的缓存。未经事先书面同意,您不得对每个原始 IP 地址每秒发出超过 5 个请求(平均 5 分钟内)。您同意将类似艺术家和任何排行榜数据(热门曲目、热门艺术家、热门专辑)缓存至少一周。