taskferry-celery
A Celery task backend for Taskferry. Enqueue Taskferry tasks onto a Celery app you already run; Taskferry supplies no worker and reimplements none of Celery.
pip install taskferry-celery[celery]
Submitting
from taskferry import Taskferry
runtime = Taskferry.from_mapping(
{
"backends": {"cel": {"factory": "celery", "app": "myapp.celery:app"}},
"defaults": {"task": "cel"},
}
)
runtime.tasks.submit("myapp.tasks:refresh", 42, queue="metadata")
Executing (worker)
Register the dispatcher once, then run Celery's own worker:
from celery import Celery
from taskferry_celery import register_dispatcher
from taskferry.functions import FunctionRegistry
app = Celery("myapp", broker="redis://localhost:6379/0")
register_dispatcher(app, registry=FunctionRegistry(allowed_modules=["myapp"]))
celery -A myapp worker
Capabilities (honest)
| Advertised | Not advertised | Why not |
|---|---|---|
| submit, state, cancel, delay, priority, retry | result |
needs a configured result backend Taskferry can't see |
deduplication |
Celery has no native mechanism — an idempotency_key is rejected, not ignored |
Retries are the engine's: the dispatcher raises Celery's own self.retry, so
a failed task is genuinely re-queued with the requested countdown. Taskferry never
loops in-process pretending to retry.
state maps Celery's PENDING/STARTED/SUCCESS/FAILURE/RETRY/REVOKED onto the
portable states. Note Celery reports PENDING for both a queued task and an
unknown id; without a result backend the two are indistinguishable, and this
adapter says so rather than guessing.
Only JSON-safe arguments and a "module:function" name cross the wire — never a
pickled callable.
License
Apache-2.0.
Release files for taskferry-celery 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| taskferry_celery-0.1.0.tar.gz | 12.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| taskferry_celery-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 26.3 kB
Release files / taskferry_celery-0.1.0.tar.gz
| Download URL | taskferry_celery-0.1.0.tar.gz |
|---|---|
| Size | 12.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
084c4de674230a5be7d9277938ebf61ba091b8f0d31d0757480922e12cac91b0
|
|
BLAKE2b-256 checksum How to use checksums |
907b18d60f74d3b78e8df9f7f89e91ef9ccadc5e5afe27c62c3d165927a539e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency logRelease files / taskferry_celery-0.1.0-py3-none-any.whl
| Download URL | taskferry_celery-0.1.0-py3-none-any.whl |
|---|---|
| Size | 14.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7c6cc0f7343afb4eb6f6e18741ace1ee4ba8bc7117aefc654dfb23128aaba8f6
|
|
BLAKE2b-256 checksum How to use checksums |
c7458f42b8ad9338d4adc65b954ea9d02499d38a1e9f07fe3ceaf9e26a2dc7d5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 18, 2026.
Transparency log