【问题标题】:Python: Routine for handling API request limitsPython:处理 API 请求限制的例程
【发布时间】:2013-10-07 13:15:01
【问题描述】:

我需要针对每天只允许 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 调用吗?

【问题讨论】:

  • 问题是即使算上我自己,我正在迭代的元素可能与之前的顺序不同,这使得第二天很难恢复
  • 我之所以问,是因为我看不到记录已执行调用的有效方法,以便我知道第二天在哪里继续

标签: python api httprequest


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 2018-08-07
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多