huey, a little task queue
Project description
huey - a little task queue
==========================
.. image:: http://media.charlesleifer.com/blog/photos/huey-logo.png
a lightweight alternative.
* written in python (2.7+, 3.4+)
* optional dependency on the Python Redis client
supports:
* multi-process, multi-thread or greenlet task execution models
* schedule tasks to execute at a given time, or after a given delay
* schedule recurring tasks, like a crontab
* retry tasks that fail automatically
* task result storage
* task locking
* task pipelines and chains
.. image:: http://i.imgur.com/2EpRs.jpg
.. image:: https://api.travis-ci.org/coleifer/huey.svg?branch=master
Huey's API
----------
.. code-block:: python
from huey import RedisHuey, crontab
huey = RedisHuey('my-app', host='redis.myapp.com')
@huey.task()
def add_numbers(a, b):
return a + b
@huey.periodic_task(crontab(minute='0', hour='3'))
def nightly_backup():
sync_all_data()
To run the consumer with 4 worker processes:
.. code-block:: console
$ huey_consumer.py my_app.huey -k process -w 4
To enqueue a task to add two numbers and print the result:
.. code-block:: python
res = add_numbers(1, 2) # Enqueues task.
print(res.get()) # Prints "3".
To schedule two numbers to be added in 10 seconds:
.. code-block:: python
res = add_numbers.schedule(args=(1, 2), delay=10)
# Attempt to get result without blocking.
print(res.get(False)) # returns None.
# Block until result is ready and print.
print(res.get()) # after 10 seconds, prints "3".
Brokers
-------
To use Huey with Redis (**recommended**):
.. code-block:: python
from huey import RedisHuey
huey = RedisHuey()
To use Huey with SQLite (`docs <http://huey.readthedocs.io/en/latest/contrib.html#sqlite-storage>`_):
.. code-block:: python
from huey.contrib.sqlitedb import SqliteHuey
huey = SqliteHuey('my-app-queue.db')
To run Huey within the parent process using background greenlets (`docs <http://huey.readthedocs.io/en/latest/contrib.html#mini-huey>`_):
.. code-block:: python
from huey.contrib.minimal import MiniHuey
huey = MiniHuey()
huey.start() # Spawns scheduler background thread and returns immediately.
To run Huey with a simple Python broker (**should not be used in production**),
install [simpledb](https://github.com/coleifer/simpledb) and run:
.. code-block:: python
from huey.contrib.simple_storage import SimpleHuey
huey = SimpleHuey()
# Be sure to run the Python broker process, e.g.:
# $ python simpledb.py # Starts Python broker.
Documentation
----------------
`See Huey documentation <https://huey.readthedocs.io/>`_.
Project page
---------------
`See source code and issue tracker on Github <https://github.com/coleifer/huey/>`_.
Huey is named in honor of my cat:
.. image:: http://m.charlesleifer.com/t/800x-/blog/photos/p1473037658.76.jpg?key=mD9_qMaKBAuGPi95KzXYqg
==========================
.. image:: http://media.charlesleifer.com/blog/photos/huey-logo.png
a lightweight alternative.
* written in python (2.7+, 3.4+)
* optional dependency on the Python Redis client
supports:
* multi-process, multi-thread or greenlet task execution models
* schedule tasks to execute at a given time, or after a given delay
* schedule recurring tasks, like a crontab
* retry tasks that fail automatically
* task result storage
* task locking
* task pipelines and chains
.. image:: http://i.imgur.com/2EpRs.jpg
.. image:: https://api.travis-ci.org/coleifer/huey.svg?branch=master
Huey's API
----------
.. code-block:: python
from huey import RedisHuey, crontab
huey = RedisHuey('my-app', host='redis.myapp.com')
@huey.task()
def add_numbers(a, b):
return a + b
@huey.periodic_task(crontab(minute='0', hour='3'))
def nightly_backup():
sync_all_data()
To run the consumer with 4 worker processes:
.. code-block:: console
$ huey_consumer.py my_app.huey -k process -w 4
To enqueue a task to add two numbers and print the result:
.. code-block:: python
res = add_numbers(1, 2) # Enqueues task.
print(res.get()) # Prints "3".
To schedule two numbers to be added in 10 seconds:
.. code-block:: python
res = add_numbers.schedule(args=(1, 2), delay=10)
# Attempt to get result without blocking.
print(res.get(False)) # returns None.
# Block until result is ready and print.
print(res.get()) # after 10 seconds, prints "3".
Brokers
-------
To use Huey with Redis (**recommended**):
.. code-block:: python
from huey import RedisHuey
huey = RedisHuey()
To use Huey with SQLite (`docs <http://huey.readthedocs.io/en/latest/contrib.html#sqlite-storage>`_):
.. code-block:: python
from huey.contrib.sqlitedb import SqliteHuey
huey = SqliteHuey('my-app-queue.db')
To run Huey within the parent process using background greenlets (`docs <http://huey.readthedocs.io/en/latest/contrib.html#mini-huey>`_):
.. code-block:: python
from huey.contrib.minimal import MiniHuey
huey = MiniHuey()
huey.start() # Spawns scheduler background thread and returns immediately.
To run Huey with a simple Python broker (**should not be used in production**),
install [simpledb](https://github.com/coleifer/simpledb) and run:
.. code-block:: python
from huey.contrib.simple_storage import SimpleHuey
huey = SimpleHuey()
# Be sure to run the Python broker process, e.g.:
# $ python simpledb.py # Starts Python broker.
Documentation
----------------
`See Huey documentation <https://huey.readthedocs.io/>`_.
Project page
---------------
`See source code and issue tracker on Github <https://github.com/coleifer/huey/>`_.
Huey is named in honor of my cat:
.. image:: http://m.charlesleifer.com/t/800x-/blog/photos/p1473037658.76.jpg?key=mD9_qMaKBAuGPi95KzXYqg
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
huey-1.9.0.tar.gz
(308.8 kB
view details)
File details
Details for the file huey-1.9.0.tar.gz.
File metadata
- Download URL: huey-1.9.0.tar.gz
- Upload date:
- Size: 308.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bcdcc246451155e6a8c804993894e059b5197e4481ed1c1fc184f42077ec5095
|
|
| MD5 |
9b7a7a34397329a6890b547616db6ed4
|
|
| BLAKE2b-256 |
b3fdc41e0a0746ee001866055fbd48e6aadc085bdc48d699c66cf658bee028da
|