[Python] Python API Rate Limiting - How to Limit API Calls Globally

Discussão em 'Python' iniciado por Stack, Maio 2, 2025.

  1. Stack

    Stack Membro Participativo

    I'm trying to restrict the API calls in my code. I already found a nice python library ratelimiter==1.0.2.post0 https://pypi.python.org/pypi/ratelimiter

    However, this library can only limit the rate in local scope. i.e) in function and loops

    # 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()


    Because I have several functions, which make API calls, in different places, I want to limit the API calls in global scope.

    For example, suppose I want to limit the APIs call to one time per second. And, suppose I have functions x and y in which two API calls are made.

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

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


    By decorating the functions with the limiter, I'm able to limit the rate against the two functions.

    However, if I execute the above two functions sequentially, it looses track of the number of API calls in global scope because they are unaware of each other. So, y will be called right after the execution of x without waiting another second. And, this will violate the one time per second restriction.

    Is there any way or library that I can use to limit the rate globally in python?

    Continue reading...

Compartilhe esta Página