TaskHawk is a replacement for celery that works on AWS SQS/SNS, while keeping things pretty simple and straight forward. Any unbound function can be converted into a TaskHawk task.
Only Python 3.6+ is supported currently.
You can find the latest, most up to date, documentation at Read the Docs.
First, install the library:
$ pip install taskhawk
Next, set up a few configuration settings:
AWS_ACCESS_KEY = YOUR AWS KEY
AWS_ACCOUNT_ID = YOUR AWS ACCOUNT ID
AWS_REGION = YOUR AWS REGION
AWS_SECRET_KEY = YOUR AWS SECRET KEY
TASKHAWK_QUEUE = YOUR APP TASKHAWK QUEUE
For Django projects, simple use Django settings to configure Taskhawk, for non-Django projects, you
must declare an environment variable called SETTINGS_MODULE
that points to a module
where settings may be found.
Then, simply add the decorator taskhawk.task
to your function:
@taskhawk.task
def send_email(to: str, subject: str, from_email: str = None) -> None:
# send email
And finally, dispatch your function asynchronously:
send_email.dispatch('example@email.com', 'Hello!', from_email='example@spammer.com')
Assuming that you have Python, pyenv
and pyenv-virtualenv
installed, set up your
environment and install the required dependencies like this instead of
the pip install taskhawk
defined above:
$ git clone https://github.com/Automatic/taskhawk-python.git
$ cd taskhawk-python
$ pyenv virtualenv 3.6.5 taskhawk-3.6
...
$ pyenv activate taskhawk-3.6
$ pip install -r requirements/dev-3.6.txt
You can run tests in using make test
. By default,
it will run all of the unit and functional tests, but you can also specify your own
py.test
options.
$ py.test
$ py.test tests/test_consumer.py
Sphinx is used for documentation. You can generate HTML locally with the following:
$ pip install -e .[dev]
$ make docs
We use GitHub issues for tracking bugs and feature requests.
- If it turns out that you may have found a bug, please open an issue