[英]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.