A minimalistic in-memory async Python Task queue
Project description
Kolona
A minimalistic in-memory async Python Task queue.
Install
pip install kolona
Features
- Retry tasks
- Multiple workers
- In-memor only (no 3rd party message brokers required)
- Python native using asyncio
- Staticly typed
Example
import asyncio
from kolona import task, Workers
# create a queue
QUEUE = asyncio.Queue()
@task(queue=QUEUE, max_retries=2)
async def purchase_listener(*args):
print(f"purchase_listener -> args: {args}")
@task(queue=QUEUE, max_retries=3)
async def account_checker(*args):
print(f"account_checker doing checking")
async def main():
# queue 1 account_checker task
await account_checker.enqueue()
# queue 3 purchase_listener tasks, pass an argument into it
for x in range(3):
print(f"Queueing: task-{x}")
await purchase_listener.enqueue(f"task-{x}")
# start 3 workers
workers = Workers(queue=QUEUE, name="worker", count=3)
# block on workers
await asyncio.gather(*workers.get())
if __name__ == "__main__":
loop = asyncio.get_event_loop()
loop.run_until_complete(main())
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
kolona-0.1.6.tar.gz
(5.1 kB
view hashes)
Built Distribution
kolona-0.1.6-py3-none-any.whl
(5.7 kB
view hashes)