Donald is here
Project description
Donald – A simple task engine for Asyncio.
The main goal for Donald to run async/sync code without blocking main loop.
Donald supports synchronous and asynchronous paradigms. The package is running coroutines and functions in multi loops. Donald could run periodic tasks and listen AMQP queues.
Requirements
python 3.8+
Installation
Donald should be installed using pip:
pip install donald
Usage
From shell:
$ donald --help
From asynchronous python code:
# Init Donald
donald = Donald(
# Params (default values)
# -----------------------
# Run tasks imediatelly in the same process/thread
fake_mode=False,
# Number of workers
num_workers=multiprocessing.cpu_count() - 1,
# Maximum concurent tasks per worker
max_tasks_per_worker=100,
# Ensure that the Donald starts only once (set to filename to lock)
filelock=None,
# logging level
loglevel='INFO',
# AMQP params
queue=False,
queue_name='donald',
queue_params={},
)
# Schedule periodic tasks
@donald.schedule(crontab_string | seconds_float | datetime_timedelta, *args, **kwargs)
async def task(*args, **kwargs):
# ...
# Start the donald
await donald.start()
# ...
# Submit a task to donald
donald.submit(corofunction or function, *args, **kwargs)
# Submit and wait for result
result = await donald.submit(corofunction or function, *args, **kwargs)
# Submit a task to queue
queue.submit(corofunction or function, *args, **kwargs)
await donald.queue.submit(corofunction or function, *args, **kwargs)
# note: queue dont support waiting for results
# ...
# Stop the donald
await donald.stop()
Connect and receive tasks using AMQP
donald = Donald()
await donald.start()
await donald.queue.start()
# ...
# Stop the donald
await donald.queue.stop()
await donald.stop()
Submit tasks to AMQP
# Send task to queue
await donald.queue.submit(<coro or func>, *args, **kwargs)
# ...
Bug tracker
If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/donald/issues
Contributing
Development of starter happens at github: https://github.com/klen/donald
Contributors
klen (Kirill Klenov)
License
Licensed under a BSD license.
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
Built Distribution
File details
Details for the file donald-0.7.0.tar.gz
.
File metadata
- Download URL: donald-0.7.0.tar.gz
- Upload date:
- Size: 9.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9633d4cd8b032405a075edb24ec073675e417a22e31f9e103ed5a001421bb935 |
|
MD5 | e56895c64d5a775ec6310df81647ae5e |
|
BLAKE2b-256 | 25333b10a1d436ed1b7dbff382056333a3a2479dfdfd9fc59c08e453c11282d7 |
File details
Details for the file donald-0.7.0-py3-none-any.whl
.
File metadata
- Download URL: donald-0.7.0-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.3.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.0 CPython/3.9.5
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0041a555f597aa383bc4044739d4b8895aa320cea4e467fc869ef54ecc986205 |
|
MD5 | c6f55e2ecfb79fa6f3092e31199f5ff4 |
|
BLAKE2b-256 | 0510a441efc86fc64b628fad887ea9cf518081891dba510b5a33a1c2d666624e |