python 功能限制包装器(来自https://github.com/themiurgo/ratelim)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 功能限制包装器(来自https://github.com/themiurgo/ratelim)相关的知识,希望对你有一定的参考价值。
class patient(object):
def __init__(self, max_calls, time_interval):
if max_calls <= 0:
raise ValueError("max_calls must be positive")
if time_interval <= 0:
raise ValueError("time_interval must be positive")
self.__last_call = None
self.__time_interval = float(time_interval) / max_calls # seconds
def __call__(self, f, *args, **kwargs):
def wrapped_f(*args, **kwargs):
now = datetime.datetime.now()
# At the first call, reset the time
if self.__last_call == None:
self.__last_call = now
result = f(*args, **kwargs)
return result
time_delta = now - self.__last_call
time_delta = int(time_delta.total_seconds())
assert time_delta >= 0
if time_delta <= self.__time_interval:
to_sleep = self.__time_interval - time_delta
# print "To sleep", to_sleep
time.sleep(to_sleep)
result = f(*args, **kwargs)
self.__last_call = datetime.datetime.now()
return result
return wrapped_f
def __numcalls__(self):
return self.__numcalls
以上是关于python 功能限制包装器(来自https://github.com/themiurgo/ratelim)的主要内容,如果未能解决你的问题,请参考以下文章
Swift | 属性包装器
python3 functools partial 用于函数的包装器详解
Python 高效包装器
为啥某些python代码的包装器和包装函数是相同的。
SWIG包装器未声明(此功能首次使用)
试图理解 Python 包装器