Skip to main content

CLI for the Awa Postgres-native job queue (migrations, admin, serve)

Project description

awa-cli

Command-line interface for the Awa Postgres-native job queue. Run migrations, inspect and manage jobs, walk the storage transition, drive the Dead Letter Queue, list cron schedules, and serve the web admin UI.

Install

The CLI is shipped as both a Rust binary and a Python wheel. Either distribution gives you the same awa executable, including the embedded React admin dashboard for awa serve.

# Python (no Rust toolchain needed)
pip install awa-cli

# Rust
cargo install awa-cli

If you're already using the awa-pg Python SDK, install both with one command:

pip install 'awa-pg[ui]'

That pulls in awa-cli as a dependency so python -m awa serve works end-to-end alongside the worker SDK.

Quick start

# Run migrations
awa --database-url $DATABASE_URL migrate

# Inspect
awa --database-url $DATABASE_URL queue stats
awa --database-url $DATABASE_URL job list --state failed
awa --database-url $DATABASE_URL job dump 12345
awa --database-url $DATABASE_URL job dump-run 12345

# Admin
awa --database-url $DATABASE_URL job retry 12345
awa --database-url $DATABASE_URL queue pause email
awa --database-url $DATABASE_URL queue drain email

# Web UI
awa --database-url $DATABASE_URL serve
# → http://127.0.0.1:3000

DATABASE_URL may be passed as the --database-url flag or read from the environment.

Commands

Command Description
migrate Apply migrations, or extract / print SQL with --sql / --extract-to
job list List jobs with --state / --kind / --queue filters
job dump <id> Pretty-print one job and its full lifecycle metadata
job dump-run <id> [--attempt N] Pretty-print one attempt run
job retry <id> Retry a failed or cancelled job
job cancel <id> Cancel a job
job retry-failed --kind K Retry every failed job of a given kind
job discard --kind K Delete every failed job of a given kind
queue stats Per-queue depth, lag, and throughput
queue pause / resume / drain <queue> Queue admin
cron list / remove List or remove cron schedules
dlq depth [--queue Q] Total DLQ rows, optionally split by queue
dlq list List DLQ entries with --kind / --queue / --tag / --before-* filters
dlq retry <id> Retry a single DLQ row
dlq retry-bulk Retry every DLQ row matching the filter (--all required if no filter is given)
dlq move Move existing failed terminal rows into the DLQ
dlq purge Delete DLQ rows matching the filter (--all required if no filter is given)
storage status Current storage-transition state
storage prepare --engine E Prepare a future storage engine without changing routing
storage prepare-queue-storage-schema Materialize the queue-storage schema (tables, indexes, functions)
storage enter-mixed-transition Begin routing new writes to the prepared engine
storage finalize Finalize the transition once drain and capability gates pass
storage abort Abort a prepared or mixed-transition rollout
serve Start the embedded web admin UI

Run awa <command> --help for the flags on any subcommand.

Storage transition

For an existing 0.5.x cluster moving to the queue-storage engine, the typical sequence is:

awa --database-url $DATABASE_URL storage prepare-queue-storage-schema
awa --database-url $DATABASE_URL storage prepare --engine queue_storage
# ... roll out a binary that supports queue storage to all workers ...
awa --database-url $DATABASE_URL storage enter-mixed-transition
# ... drain the canonical engine ...
awa --database-url $DATABASE_URL storage finalize

See docs/upgrade-0.5-to-0.6.md for the full pre-flight checklist, gate semantics, and rollback notes. Fresh installs auto-finalize on first migrate and do not need this sequence.

Dead Letter Queue

dlq retry-bulk and dlq purge require an explicit filter (--kind, --queue, or --tag) or --all. This is intentional — a bare bulk retry / purge with no filter would touch every DLQ row, which is almost never what you want. See docs/dead-letter-queue.md.

Web UI

awa serve starts an embedded admin UI (awa-ui) bound to 127.0.0.1:3000 by default. The UI is read-only when the database reports transaction_read_only = on (e.g. on a replica) or when --read-only is passed explicitly. Mutation endpoints return 503 in that mode.

License

MIT OR Apache-2.0

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

awa_cli-0.6.0a5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (5.2 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ x86-64

awa_cli-0.6.0a5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (5.1 MB view details)

Uploaded Python 3manylinux: glibc 2.17+ ARM64

awa_cli-0.6.0a5-py3-none-macosx_11_0_arm64.whl (4.9 MB view details)

Uploaded Python 3macOS 11.0+ ARM64

awa_cli-0.6.0a5-py3-none-macosx_10_12_x86_64.whl (5.1 MB view details)

Uploaded Python 3macOS 10.12+ x86-64

File details

Details for the file awa_cli-0.6.0a5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for awa_cli-0.6.0a5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 da9a10709fad1b5bfcc2b6bfff953eaa89025e39320dfe2a37a7d15c9c2c386e
MD5 c7b776a22e0ebf03342e319996fd0aa2
BLAKE2b-256 69026910e9571215a9a78b715a8dea6bff7f325b79e6bcee954ac3fdde77221d

See more details on using hashes here.

Provenance

The following attestation bundles were made for awa_cli-0.6.0a5-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: release.yml on hardbyte/awa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file awa_cli-0.6.0a5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for awa_cli-0.6.0a5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5673c0be78c2dfd494ea69ad3b54702f7bc45cac94aff07575802888011957e2
MD5 ecce0bc1a18c4f5e695cad970c0d0e2c
BLAKE2b-256 1f9e6ec143d3211b98a7258bdef5327459d53f61c097301796bc217eefe5ef80

See more details on using hashes here.

Provenance

The following attestation bundles were made for awa_cli-0.6.0a5-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: release.yml on hardbyte/awa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file awa_cli-0.6.0a5-py3-none-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for awa_cli-0.6.0a5-py3-none-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1380cc1b2b0f2b23b0b7cd9161a5d06f74210ba3165aa27ed35281c96d528a0b
MD5 4ef3998db2d5c585d5d75a78136d2c08
BLAKE2b-256 250681f85b640bee4ada1ea931f2dfa03cebc5211b58d8cbaf64b9c5a183bc31

See more details on using hashes here.

Provenance

The following attestation bundles were made for awa_cli-0.6.0a5-py3-none-macosx_11_0_arm64.whl:

Publisher: release.yml on hardbyte/awa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file awa_cli-0.6.0a5-py3-none-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for awa_cli-0.6.0a5-py3-none-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 df6cfea25e66602e2f19d3bc2474a542d95699c2b5422e3af9e59f0922aa00db
MD5 92a4493e273e13b4345cfc5ae6554e8b
BLAKE2b-256 0de52aa4888ab720928fc1468ea7bb5480162c8ff9f085455ae91b5e9f711404

See more details on using hashes here.

Provenance

The following attestation bundles were made for awa_cli-0.6.0a5-py3-none-macosx_10_12_x86_64.whl:

Publisher: release.yml on hardbyte/awa

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page