Skip to content

Message Format

All tasks are serialized by TaskRecord msgspec model using json format

TaskRecord

Source code in aiotaskqueue/serialization/_serialization.py
class TaskRecord(msgspec.Struct, kw_only=True):
    id: str
    task_name: str
    requeue_count: int = 0
    enqueue_time: datetime
    args: tuple[tuple[SerializationBackendId, str], ...]
    kwargs: dict[str, tuple[SerializationBackendId, str]]
    meta: dict[str, Any] = msgspec.field(default_factory=dict)

Since parameters can be encoded using different serialization backends args, kwargs and result values are stored as a tuple (array in json) with serialization backend name and encoded value.

{
  "id":"90ca5786-02c7-4320-a8d2-7db161f91955",
  "task_name":"task-name",
  "enqueue_time":"2025-03-27T09:59:25.185591Z",
  "args":[
    ["msgspec","1"],
    ["msgspec","2"],
    ["msgspec","3"]
  ],
  "kwargs": {
    "pydantic_arg":["pydantic","{\"a\":42,\"b\":\"str\"}"],
    "msgspec_arg":["msgspec","{\"a\":42,\"b\":\"str\"}"]
  },
  "meta":{
    "retry_count": 1
  }
}