Python decorators for asyncio
Project description
aiodecorator
Python decorators for asyncio, including
- throttle: Throttle a (coroutine) function that return an
Awaitable
Install
$ pip install aiodecorator
Usage
import time
import asyncio
from aiodecorator import (
throttle
)
now = time.time()
# -----------------------------------------------------
# The throttled function is only called twice a second
@throttle(2, 1)
async def throttled(index: int):
diff = format(time.time - now, '.0f')
print(index, f'{diff}s')
# -----------------------------------------------------
async def main():
loop = asyncio.get_running_loop()
tasks = [
loop.create_task(throttled(index))
for index in range(5)
]
await asyncio.wait(tasks)
asyncio.run(main())
# Output
# 0 0s
# 1 0s
# 2 1s
# 3 1s
# 4 2s
APIs
throttle(limit: int, interval: Union[float, int])
- limit
int
Maximum number of calls within aninterval
. - interval
Union[int, float]
Timespan for limit in seconds.
Returns a decorator function
License
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
aiodecorator-1.0.2.tar.gz
(3.2 kB
view hashes)
Built Distribution
Close
Hashes for aiodecorator-1.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d2a367e0a6da437013c8f6952c1abe26b3876d923a6e7494a68a571b41da5d8a |
|
MD5 | 26c9d5617b7bb07eabb7b6310132d827 |
|
BLAKE2b-256 | 7b7846e660aab3d355d23bb19140083d4e3157bc8d42818b212e17de62696757 |