我试图限制我的代码中的API调用。我已经找到了一个不错的python库ratelimiter==1.0.2.post0
https://pypi.python.org/pypi/ratelimiter
但是,此库只能限制本地范围内的速率。i、 e)在功能和回路中
# Decorator
@RateLimiter(max_calls=10, period=1)
def do_something():
pass
# Context Manager
rate_limiter = RateLimiter(max_calls=10, period=1)
for i in range(100):
with rate_limiter:
do_something()
因为我有几个函数,它们在不同的地方进行API调用,所以我希望将API调用限制在global范围内。
例如,假设我想将api调用限制为每秒一次。而且,假设我有函数x
和y
,其中进行了两个API调用。
@rate(...)
def x():
...
@rate(...)
def y():
...
通过用limiter
修饰函数,我可以针对这两个函数限制速率。
但是,如果我按顺序执行上述两个函数,则会失去对全局范围内的API调用数量的跟踪,因为它们彼此不知道。因此,y
将在执行x
后立即调用,而无需等待另一秒。而且,这将违反每秒一次的限制。
是否有任何方法或库可用于限制python中的全局速率?
目前没有回答
相关问题 更多 >
编程相关推荐