Python API 速率限制 - 如何全局限制 API 调用

2024-05-19 01:15:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图限制我的代码中的API调用。我已经找到了一个不错的python库ratelimiter==1.0.2.post0https://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调用限制为每秒一次。而且,假设我有函数xy,其中进行了两个API调用。

@rate(...)
def x():
   ...

@rate(...)
def y():
   ...

通过用limiter修饰函数,我可以针对这两个函数限制速率。

但是,如果我按顺序执行上述两个函数,则会失去对全局范围内的API调用数量的跟踪,因为它们彼此不知道。因此,y将在执行x后立即调用,而无需等待另一秒。而且,这将违反每秒一次的限制。

是否有任何方法或库可用于限制python中的全局速率


Tags: 函数pypiapirate速率def全局do

热门问题