Skip to main content

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.

Tests Status PYPI Version

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

donald-0.7.2.tar.gz (9.9 kB view details)

Uploaded Source

Built Distribution

donald-0.7.2-py3-none-any.whl (10.0 kB view details)

Uploaded Python 3

File details

Details for the file donald-0.7.2.tar.gz.

File metadata

  • Download URL: donald-0.7.2.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

Hashes for donald-0.7.2.tar.gz
Algorithm Hash digest
SHA256 4a7b00bda7bb1a7f9b7efa87f8d4be604573d6e4e2a047e41238a0cdcce4ab57
MD5 9e895a13d9e0a190a674afacca6f538d
BLAKE2b-256 c98d27d5d1c969c3e54a883e1af6e08cf7731867aa504379fe598cf9853f3ea2

See more details on using hashes here.

File details

Details for the file donald-0.7.2-py3-none-any.whl.

File metadata

  • Download URL: donald-0.7.2-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

Hashes for donald-0.7.2-py3-none-any.whl
Algorithm Hash digest
SHA256 62997bf924f458e14a92c27466feda9d6813f0cb644e532e1bb039de08e22a10
MD5 95b9a03bb075acf08084e0e3ef957cb1
BLAKE2b-256 afcf50a3b2aea30c075d5c520f40c1e616310454a3f4e7c03fdde3abfa76fec8

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page