Skip to content

taskiq

Package: z4j-taskiq - taskiq 0.11+.

Terminal window
pip install z4j-taskiq

taskiq’s extensibility is middleware-based:

from taskiq_redis import RedisAsyncResultBackend, ListQueueBroker
from z4j_taskiq import Z4JMiddleware
broker = ListQueueBroker("redis://localhost:6379")
broker = broker.with_result_backend(RedisAsyncResultBackend("redis://..."))
broker = broker.with_middlewares(Z4JMiddleware())

The framework adapters do this automatically. For bare usage, add it yourself.

taskiq hookz4j event
pre_sendtask_sent
pre_executetask_started
post_execute (no exception)task_succeeded
post_execute (exception)task_failed
retries (via retry middleware)task_retry
VerbHow
retrytask.kiq(*args, **kwargs) with original payload
cancelawait broker.cancel_task(task_id) where backend supports it
purge_queuebackend-specific; Redis: FLUSHDB-scoped

taskiq supports multiple brokers in one process. Each broker appears separately in the dashboard.

taskiq-scheduler is writable: schedules stored in Redis / Postgres / file backends can be created and modified from the UI. See scheduler: taskiq-scheduler.

  • ZeroMQBroker - in-memory distribution between processes. Works with z4j but each process is a separate agent.
  • AioPikaBroker (RabbitMQ) - queue length via RabbitMQ management API.
  • InMemoryBroker - local-only, useful for tests; z4j captures events but there’s no cross-process visibility.
# env
Z4J_TASKIQ_BROKERS = "myapp.brokers.redis_broker,myapp.brokers.rabbit_broker"

The agent resolves each broker path and registers it.