如何在 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)
我正在编写一个脚本,它遍历列表的元素并为每个元素调用一个 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)