A task queue library for Python and Redis
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. |
---|
**/tasks.py
).pip install fennel
Run Redis and then execute your code in tasks.py
:
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
Fennel also supports an async API. If your code is running in an event loop (e.g. via Starlette or FastAPI), you will want to use the async interface instead:
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.