Observed since 20 Oct, 16:24 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Add your description here
a2a-distributed provides distributed execution capabilities for A2A agents. It allows you to offload agent execution to background workers using popular task queues like Celery, BullMQ, or RQ (Redis Queue).
The package follows a Client/Worker architecture:
AgentExecutor.DistributedAgentExecutor: Abstract base class for all distributed executors.DistributedAgentWorker: Abstract base class for all distributed workers.CeleryAgentExecutor: Enqueues tasks to Celery.CeleryAgentWorker: Handles Celery tasks.BullMQAgentExecutor: Enqueues jobs to BullMQ.BullMQAgentWorker: Processes BullMQ jobs.RQAgentExecutor: Enqueues jobs to Redis Queue.RQAgentWorker: Processes RQ jobs.run_worker: A utility function to run any DistributedAgentWorker with built-in signal handling for graceful shutdown.from a2a_distributed import BullMQAgentExecutor
# Initialize the executor with connection options
executor = BullMQAgentExecutor(
queue_name="agent-tasks",
redis_opts={"host": "localhost", "port": 6379}
)
# Use it in your A2A server configuration
# server = A2AServer(executor=executor, ...)
import asyncio
from a2a_distributed import BullMQAgentWorker, run_worker
from a2a.server.agent_execution import LocalAgentExecutor
from a2a_redis import RedisEventQueue
async def main():
# 1. Local executor that actually runs the agent logic
local_executor = LocalAgentExecutor(...)
# 2. Event queue for reporting status/results back
event_queue = RedisEventQueue(...)
# 3. The Distributed Worker
worker = BullMQAgentWorker(
agent_executor=local_executor,
event_queue=event_queue,
queue_name="agent-tasks",
redis_opts={"host": "localhost", "port": 6379}
)
# 4. Run the worker using the utility
await run_worker(worker)
if __name__ == "__main__":
asyncio.run(main())
To run a worker, simply call await worker.run() or use the run_worker(worker) utility which handles SIGINT and SIGTERM signals for you.
For Celery and RQ, the workers are often started via their respective CLI tools, but the DistributedAgentWorker classes provided here allow for programmatic control and integration within your own async loops.
pypistats · 47 observations shown. Missing days are unknown. Source category: overall: without mirrors.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-19 – 2026-10-19 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-15 – 2026-10-15 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-13 – 2026-10-13 | 3 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-11 – 2026-10-11 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-10 – 2026-10-10 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-09 – 2026-10-09 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-08 – 2026-10-08 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-07 – 2026-10-07 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-06 – 2026-10-06 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-04 – 2026-10-04 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-02 – 2026-10-02 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-10-01 – 2026-10-01 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-30 – 2026-09-30 | 6 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-29 – 2026-09-29 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-28 – 2026-09-28 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-27 – 2026-09-27 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-26 – 2026-09-26 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-21 – 2026-09-21 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-18 – 2026-09-18 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-12 – 2026-09-12 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-10 – 2026-09-10 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-09 – 2026-09-09 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-07 – 2026-09-07 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-05 – 2026-09-05 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-03 – 2026-09-03 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-09-01 – 2026-09-01 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-31 – 2026-08-31 | 3 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-24 – 2026-08-24 | 9 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-23 – 2026-08-23 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-22 – 2026-08-22 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-20 – 2026-08-20 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-19 – 2026-08-19 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-18 – 2026-08-18 | 18 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-17 – 2026-08-17 | 4 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-16 – 2026-08-16 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-14 – 2026-08-14 | 6 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-13 – 2026-08-13 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-09 – 2026-08-09 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-06 – 2026-08-06 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-04 – 2026-08-04 | 2 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-03 – 2026-08-03 | 6 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-02 – 2026-08-02 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-08-01 – 2026-08-01 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-07-31 – 2026-07-31 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-07-29 – 2026-07-29 | 12 | 2026-10-20T17:09:34.5676832Z |
| 2026-07-27 – 2026-07-27 | 1 | 2026-10-20T17:09:34.5676832Z |
| 2026-07-23 – 2026-07-23 | 3 | 2026-10-20T17:09:34.5676832Z |
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.0.0 | 26 Feb 2026 | 5 |
This describes our collected data; it is not a security assessment.
Observed since 20 Oct, 16:24 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:19ce0c7d0a6111f872d22294a9f0b0535d3ed5f9645919afabe2dff14f537547