Awa
Typed Rust and Python jobs with segmented storage and guarded attempts.
View pinned source / version b9341ae5718f · The inspected main revision is newer than both the historical benchmark and released 0.6 packages. Development features are not claims about every release.
What this system is built around
A Rust and Python job framework using PostgreSQL for enqueue, worker claims, recovery and operational state. The inspected development revision uses segmented queue storage and claim receipts.
Evaluate when Rust and Python workers need shared PostgreSQL jobs with transactional enqueue and operational controls. Test the deployed release, database settings and handler recovery behavior; the lab and old benchmark use different snapshots.
Editorial fit, based on the cited design. Verify against your workload.Semantics & operating model
Concise claims with their scope intact. “Not verified” means this review did not establish the answer.
Claiming & concurrency
QualifiedPer-queue worker permits and an optional weighted pool govern local runtime capacity. Do not interpret global_max_workers as an automatically fleet-wide limit. Multiple claimers share one runtime’s queue permits.
Transactional enqueue
Documentedinsert_with accepts the application’s PostgreSQL transaction executor. Business writes and enqueue can share one commit. The ordinary handler’s completion is separate; the ADR-042 caller-owned handler API is not implemented at this snapshot.
Crash recovery & retries
DocumentedHeartbeat staleness and hard deadlines close abandoned attempts for retry/failure handling. Completion validates the open attempt identity; a rescued handler can still run late. Delivery is at least once.
Delayed & recurring work
DocumentedFuture run_at, retry backoff and snooze use deferred storage. A maintenance leader drives periodic/cron schedules, including timezones; a live worker fleet performs scheduling and promotion.
Uniqueness / deduplication
QualifiedInsert uniqueness is configurable by kind, queue, arguments and selected job states. It controls enqueue identity, not exactly-once handler execution or external effects.
Postgres extension required
Not requiredAwa installs SQL schemas and migrations on PostgreSQL, without a dedicated queue extension. Worker runtimes own maintenance; pg_cron is not required for its scheduler.
Operator interface
DocumentedThe awa serve operational interface includes queues, jobs, cron and dead-letter management. Runtime and CLI versions must match the supported schema/upgrade contract.
Tradeoffs to carry into a test
Queue-storage claim transactions use synchronous_commit=off. A claim acknowledged before its WAL is flushed may disappear after a database crash, leaving the job claimable again.
Claim WAL durabilityA stale-completion guard protects database state; it cannot stop an isolated old handler from calling an external service.
Attempt identity and stale writes Transactional enqueue and external effectsSegment rotation, storage trust checks and rolling upgrades are operational considerations; use the documentation for the deployed version.
Queue controls, schedules and uniqueness Postgres deployment