def throttled(func):
"""Decorator for AgentProxyMixIn.getTable to throttle requests"""
def _wrapper(*args, **kwargs):
self = args[0]
last_request = getattr(self, '_last_request')
delay = (last_request + self.throttle_delay) - time.time()
setattr(self, '_last_request', time.time())
if delay > 0:
_logger.debug("%sss delay due to throttling: %r", delay, self)
return deferLater(reactor, delay, func, *args, **kwargs)
else:
return func(*args, **kwargs)
return wraps(func)(_wrapper)
# pylint: disable=R0903
评论列表
文章目录