Apothic Client Queues and Dicts Reference

Reference for Queue, Queue claims, work-item helpers, Dict, leases, locks, compare-and-set, and leader election.

Last updated: 4/21/2026
API Version: v0.1.0
apothic-clientapireferencequeuedict

Apothic Client Queues and Dicts Reference#

This page covers the SDK primitives used for shared coordination.

Queue#

Constructors and discovery#

Queue.from_name(name: str) -> Queue
Queue.create(name: str, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Queue
Queue.list(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Queue]

Properties and management#

queue.name -> str
queue.aio -> async queue API

queue.delete(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueResponse
queue.clear(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueResponse
queue.length(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> int
queue.items(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Any]

Put and get#

queue.put(value: Any, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
queue.put_many(values: Iterable[Any], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Any]
queue.put_work(value: Any, *, max_attempts: int | None = 3, dead_letter_queue: str | None = None, metadata: dict[str, Any] | None = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
queue.get(*, default: Any = None, timeout_s: float | None = None, poll_interval_s: float = 1.0, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
queue.get_nowait(*, default: Any = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
queue.get_many(limit: int, *, timeout_s: float | None = None, poll_interval_s: float = 0.5, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Any]

Claims and work-item flows#

queue.claim(*, claimer: str, lease_s: float = 60.0, timeout_s: float | None = None, poll_interval_s: float = 0.5, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueClaim | None
queue.claim_many(limit: int, *, claimer: str, lease_s: float = 60.0, timeout_s: float | None = None, poll_interval_s: float = 0.5, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[QueueClaim]
queue.claimed(*, claimer: str, lease_s: float = 60.0, timeout_s: float | None = None, poll_interval_s: float = 0.5, auto_renew: bool = True, renew_interval_s: float | None = None, ack_on_success: bool = True, release_on_error: bool = True, client: ControlPlaneClient | None = None, base_url: str | None = None) -> context manager
queue.claim_work(*, claimer: str, lease_s: float = 60.0, timeout_s: float | None = None, poll_interval_s: float = 0.5, dead_letter_queue: str | None = None, max_attempts: int | None = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueWorkItem | None
queue.claimed_work(*, claimer: str, lease_s: float = 60.0, timeout_s: float | None = None, poll_interval_s: float = 0.5, auto_renew: bool = True, renew_interval_s: float | None = None, dead_letter_queue: str | None = None, max_attempts: int | None = None, retry_on_error: bool = True, client: ControlPlaneClient | None = None, base_url: str | None = None) -> context manager
queue.ack(claims: QueueClaim | str | Iterable[QueueClaim | str], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueResponse
queue.release(claims: QueueClaim | str | Iterable[QueueClaim | str], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueResponse
queue.renew(claims: QueueClaim | str | Iterable[QueueClaim | str], *, lease_s: float, client: ControlPlaneClient | None = None, base_url: str | None = None) -> QueueResponse

Event stream#

queue.watch(*, last_index: int = -1, timeout_s: float | None = None, poll_interval_s: float = 0.5, snapshot: bool = False, client: ControlPlaneClient | None = None, base_url: str | None = None)

Dict#

Constructors and discovery#

Dict.from_name(name: str) -> Dict
Dict.create(name: str, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Dict
Dict.list(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Dict]

Properties and management#

shared.name -> str
shared.aio -> async dict API

shared.delete(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictResponse
shared.clear(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictResponse
shared.length(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> int

Mapping-style operations#

shared.put(key: Any, value: Any, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
shared.update(values: dict[Any, Any] | Iterable[tuple[Any, Any]], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> dict[Any, Any]
shared.get(key: Any, *, default: Any = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
shared.get_many(keys: Iterable[Any], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> dict[Any, Any]
shared.pop(key: Any, *, default: Any = _MISSING, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
shared.pop_many(keys: Iterable[Any], *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> dict[Any, Any]
shared.items(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[tuple[Any, Any]]
shared.keys(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Any]
shared.values(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> list[Any]
shared.contains(key: Any, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> bool
shared.setdefault(key: Any, default: Any = None, *, client: ControlPlaneClient | None = None, base_url: str | None = None) -> Any
shared.copy(*, client: ControlPlaneClient | None = None, base_url: str | None = None) -> dict[Any, Any]

Event stream#

shared.watch(*, last_index: int = -1, timeout_s: float | None = None, poll_interval_s: float = 0.5, snapshot: bool = False, client: ControlPlaneClient | None = None, base_url: str | None = None)

Leases, locks, and leadership#

shared.acquire_lease(key: Any, *, holder: str, lease_s: float = 60.0, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLease
shared.try_acquire_lease(key: Any, *, holder: str, lease_s: float = 60.0, default_value: Any = _MISSING, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLease | None
shared.lease(key: Any, *, holder: str, lease_s: float = 60.0, auto_renew: bool = True, renew_interval_s: float | None = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> context manager
shared.release_lease(key: Any, *, lease_id: str, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictResponse
shared.renew_lease(key: Any, *, lease_id: str, lease_s: float, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLease
shared.try_lock(key: Any, *, holder: str, lease_s: float = 60.0, default_value: Any = True, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLock | None
shared.acquire_lock(key: Any, *, holder: str, lease_s: float = 60.0, wait_timeout_s: float | None = None, poll_interval_s: float = 0.5, default_value: Any = True, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLock
shared.locked(key: Any, *, holder: str, lease_s: float = 60.0, wait_timeout_s: float | None = None, poll_interval_s: float = 0.5, default_value: Any = True, auto_renew: bool = True, renew_interval_s: float | None = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> context manager
shared.try_become_leader(key: Any, *, holder: str, lease_s: float = 60.0, default_value: Any = True, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictLock | None

Compare-and-set#

shared.compare_and_set(key: Any, expected: Any, value: Any, *, lease_id: str | None = None, client: ControlPlaneClient | None = None, base_url: str | None = None) -> DictCompareAndSetResult

Async mirrors#

Both Queue and Dict expose async APIs through .aio.