in python/awsgs.py [0:0]
def RateLimited(maxPerSecond):
# Decorator function used to rate limit UDP packet sending
minInterval = 1.0 / float(maxPerSecond)
def decorate(func):
lastTimeCalled = [0.0]
def rateLimitedFunction(*args,**kargs):
elapsed = time.time() - lastTimeCalled[0]
leftToWait = minInterval - elapsed
if leftToWait>0:
time.sleep(leftToWait)
ret = func(*args,**kargs)
lastTimeCalled[0] = time.time()
return ret
return rateLimitedFunction
return decorate