[英]Limit the rate of requests to an API in a CGI script
我正在編寫的腳本有時會向API發出請求,而該API則要求每秒請求的最大數量限制為1。
將我對API的請求每秒限制為1的最直接的方法是什么?
是否會在每次發出請求時將當前時間存儲在文件中?
可以在希望進行速率限制的函數上使用速率限制python裝飾器 ,例如Greg Burek的代碼:
import time
def RateLimited(maxPerSecond):
minInterval = 1.0 / float(maxPerSecond)
def decorate(func):
lastTimeCalled = [0.0]
def rateLimitedFunction(*args,**kargs):
elapsed = time.clock() - lastTimeCalled[0]
leftToWait = minInterval - elapsed
if leftToWait>0:
time.sleep(leftToWait)
ret = func(*args,**kargs)
lastTimeCalled[0] = time.clock()
return ret
return rateLimitedFunction
return decorate
@RateLimited(2) # 2 per second at most
def PrintNumber(num):
print num
if __name__ == "__main__":
print "This should print 1,2,3... at about 2 per second."
for i in range(1,100):
PrintNumber(i)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.