- Marked as Production/Stable. The API has been stable since the initial release and is supported for production use.
Initial release.
Security review applied before ship:
task_namesmuggled via**task_kwargsno longer bypasses the duplicate-name guard (defense in depth).extra={"serializer": ...}is rejected to prevent a future broker release accepting that kwarg from bypassing the JSON-only enforcement (CWE-502 hardening).result_backend_urlnow raisesNotImplementedErrorrather than silently dropping the value — a misconfigured result backend can no longer be ignored.- Double-init guard on
init_taskiq— calling it twice on the same app raises rather than double-registering startup/shutdown hooks. check_brokeractually probes the broker (was a staticTruebefore) and scrubs Redis/NATS credentials from any error string.add_scheduledremoved from the public API — it set labels in a formatTaskiqSchedulerdoes not consume.Scheduledremains as a cron-validation value type; README shows the directLabelScheduleSourcewiring.
Features:
create_broker(TaskIQConfig(...))— URL-scheme allowlist (memory://,redis://,rediss://,nats://), JSON serializer enforced at construction.@task(broker, ...)decorator with duplicate-name detection.Scheduledvalue type with cron-syntax validation viacroniter(extras[cron]).init_taskiq(app, ...)wires startup/shutdown into the app lifecycle.Depends(get_broker)+WeakKeyDictionaryregistry.check_broker()health probe +HealthReportwith credential scrubbing.in_memory_broker()async context manager for tests.- Extras:
[redis](taskiq-redis),[nats](taskiq-nats),[cron](croniter).