我通过他们的API使用Python连接到Web服务。它们具有泄漏的桶节流,最大突发40个呼叫,恢复速率为2个呼叫/秒。我知道我可以每0.5秒发出一次请求并且从未达到限制但是如果我需要拨打一千个电话,我不会在实际通话的延迟时间内浪费时间。在足够的呼叫之后,这将累积大量时间。
所以,如果我想在我需要做的数千次通话中尽可能少地浪费时间,我可以做这样的事情:
import requests
from datetime import datetime
time1 = datetime.now()
count = 0
for url in api_urls:
api_resp = requests.get(url)
count += 1
if count == 40:
time2 = datetime.now()
time.sleep(20-(time2-time1)) # 20s total time to restore 40 calls
count = 0 # minus the time it took to
time1 = datetime.now() # get to 40 total calls
恢复率是否适用于拨打40个电话所需的时间?如果是这样的话,我不需要等待整整20秒再做40次爆发,因为它实际上需要一些时间来进行前40次呼叫吗?
爆发40次通话所需的时间是如此微不足道,以至于无关紧要?
提前致谢。