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...