0

我需要针对每天只允许 500 个 HTTP 请求的公共服务发出大量 HTTP 请求(> 1000 个)。因此,我必须计算已执行请求的数量,并在达到每日最大数量时停止,以便第二天继续处理剩余的调用。特别是,我遍历了一个未排序的列表,所以我不能假设元素是按任何顺序排列的。我的代码如下所示:

from requests import Session, Request

request_parameters = {'api_key': api_key}

for user_id in all_user_ids:
    r = requests.get('http://public-api.com/%s'% user_id, request_parameters)
    text = r.content
    # do some stuff with text

您可以推荐任何包或模式来计算和恢复这样的 API 调用吗?

4

1 回答 1

0

我建议实施一个简单的计数器,以在您达到当天的限制时停止,以及您已经收到的数据的本地缓存。然后,当您第二天再次运行该过程时,首先根据本地缓存检查每条记录,如果本地缓存中没有记录,则仅继续调用 Web 服务。这样,您最终将拥有所有数据,除非您每天生成的请求数超过服务使用限制。

缓存的格式将取决于从 Web 服务返回的内容以及您需要多少数据,但它可能像 csv 文件一样简单,其中包含要搜索的唯一标识符以及您需要检索的其他字段在未来。

另一种选择是将每次调用的整个响应(如果您需要大量响应)存储在字典中,键是唯一标识符,值是响应。这可以保存为 json 文件并轻松加载回内存以检查未来的运行。

于 2013-10-07T13:48:05.377 回答