Throttle¶
decorator¶
We can use aiothrottling.Throttle
as decorator for coroutines:
from aiothrottling import throttle # Throttle alias import time @throttle(rate='1/s') async def foo(n): print(n, time.time()) for i in range(5): await foo(i) # 0 1563272100.4413373 # 1 1563272101.4427333 # 2 1563272102.4441307 # 3 1563272103.445542 # 4 1563272104.4468124
awaitable¶
We can use aiothrottling.Throttle
as awaitable object:
from aiothrottling import Throttle import time throttle = Throttle(rate='1/s') async def foo(n): print(n, time.time()) for i in range(5): await throttle await foo(i) # 0 1563275828.253736 # 1 1563275829.2547996 # 2 1563275830.2562528 # 3 1563275831.257302 # 4 1563275832.2587304
context manager¶
We can use aiothrottling.Throttle
as context manager:
from aiothrottling import Throttle import time throttle = Throttle(rate='1/s') async def foo(n): print(n, time.time()) for i in range(5): async with throttle: await foo(i) # 0 1563275898.6722345 # 1 1563275899.673589 # 2 1563275900.6750457 # 3 1563275901.6763387 # 4 1563275902.6777005