A task queue for Python based on Redis Streams.
A task queue for Python 3.7+ based on Redis Streams with a Celery-like API.
|Note: This is an alpha release. The project is under development, breaking changes are likely.|
- Supports both sync (e.g. Django, Flask) and async (e.g. Starlette, FastAPI) code.
- Sane defaults: at least once processing semantics, tasks acknowledged on completion.
- Automatic retries with exponential backoff for fire-and-forget jobs.
- Clear task statuses available (e.g. sent, executing, success).
- Automatic task discovery (defaults to using
- Exceptionally small and understandable codebase.
pip install fennel
Run Redis and then execute your code in
from fennel import App app = App(name='myapp', redis_url='redis://127.0.0.1') @app.task def foo(n): return n # Enqueue a task to be executed in the background by a fennel worker process. foo.delay(7)
Meanwhile, run the worker:
$ fennel worker --app tasks:app
from fennel import App app = App(name='myapp', redis_url='redis://127.0.0.1', interface='async') @app.task async def bar(x): return x await bar.delay(5)
If you need to ensure that all tasks for a given key are processed in-order, please see our sister project Runnel.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.