如何在 Python 脚本中正确管理 API 调用限制?

How to properly manage API call limits in a Python script?

我正在编写一个脚本,它遍历列表的元素并为每个元素调用一个 api。类似于:

myList=['a','b',...] #200k items 

result_dict={}

for item in myList:
    result=myapi.myfunction(item) #I think this way is slower since it has to check credentials every iteration
    result_dict[item]=result

或者,或者(也许更快,我没有检查过)

myList=['a','b',...] #200k items 

result_dict={}

results=myapi.myfunction(myList) #I can pass either an item or a list

for id_, result in results:
     result_dict[id_]=result

我每天有 20,000 次调用的限制,之后我会为每个额外请求付费,我假设我能够在一天结束前完成所有 20,000 次调用。因此,我需要想办法控制它。

我考虑过计算通话次数,当我达到 20k 时,我将代码置于待机状态,直到下一个午夜。是否有意义?如何实现它,例如通过 time.sleep() 函数?我离开脚本没有问题 运行,因为我在 AWS 远程服务器上工作。

你能提出更好的建议吗?

您有两个选择:将呼叫分散到一整天(每小时 20000 / 24 个呼叫)或在达到 20000 个呼叫后停止呼叫直到午夜。

只需为 API 调用添加一个计数器,并添加一个条件来检查您是否达到了 20k 调用。

如果达到 20000 次调用,您可以 time.sleep() t 秒直到午夜。

您可以使用日期时间计算到午夜的秒数:

import datetime
import time
now = datetime.datetime.now()
midnight = datetime.datetime.now() + datetime.timedelta(days=1)
midnight = midnight.replace(hour=0, minute=0, second=0)
seconds_until_midnight = (midnight - now).total_seconds()
time.sleep(seconds_until_midnight)