Postgres backend plugin for SimpleBroker
Project description
simplebroker-pg
Postgres backend plugin for SimpleBroker.
This package is intentionally separate from simplebroker itself. SimpleBroker
remains SQLite-first. This package adds a Postgres backend through the public
backend plugin hook.
Requirements
- Python 3.10+
- PostgreSQL
- A dedicated schema for SimpleBroker tables
public is intentionally rejected.
Installation
# Fresh install through SimpleBroker's convenience extra
pipx install "simplebroker[pg]"
# Add to an existing pipx-installed simplebroker (recommended)
pipx inject simplebroker simplebroker-pg
# Or install through the convenience extra in a project
uv add "simplebroker[pg]"
# Or install the extension directly with uv
uv add simplebroker-pg
# Or install the extension directly with pip
pip install simplebroker-pg
simplebroker[pg] still installs this package as a separate distribution.
Postgres support is not built into the default simplebroker install.
Python Usage
from simplebroker import Queue
from simplebroker_pg import PostgresRunner
runner = PostgresRunner(
"postgresql://postgres@127.0.0.1:54329/simplebroker_test",
schema="simplebroker_app",
)
queue = Queue("jobs", runner=runner, persistent=True)
try:
queue.write("hello")
print(queue.read())
finally:
queue.close()
runner.close()
Multi-Queue Activity Waiters
Postgres supports simplebroker.create_activity_waiter_for_queues(...) with
one process-local shared LISTEN/NOTIFY listener per DSN and schema. The waiter
wakes when any watched queue receives activity, ignores unrelated queue
notifications, and returns the same ActivityWaiter | None shape as the core
API.
Wakeups are hints. After wait(timeout) returns True, callers should still
drain queues through normal SimpleBroker reads or moves. Close the multi-queue
waiter explicitly when the watcher lifecycle ends.
CLI Usage
Create .broker.toml in the project root, or use the configured
BROKER_PROJECT_CONFIG_PATH / BROKER_PROJECT_CONFIG_NAME location:
version = 1
backend = "postgres"
target = "postgresql://postgres@127.0.0.1:54329/simplebroker_test"
[backend_options]
schema = "simplebroker_app"
Then use the normal CLI from any child directory with project scope enabled:
broker init
broker write jobs hello
broker read jobs
You can also run entirely from environment variables without a project config:
BROKER_BACKEND=postgres \
BROKER_BACKEND_TARGET='postgresql://postgres@127.0.0.1:54329/simplebroker_test' \
BROKER_BACKEND_SCHEMA='simplebroker_app' \
BROKER_BACKEND_PASSWORD='postgres' \
broker init
Notes:
- In env-only backend configuration,
BROKER_BACKEND_TARGEToverrides the host/port/user/database parts. BROKER_BACKEND_HOST,BROKER_BACKEND_PORT,BROKER_BACKEND_USER,BROKER_BACKEND_PASSWORD, andBROKER_BACKEND_DATABASEare only used when there is no target from project config or env.- When project TOML provides the target or schema, the project file wins.
BROKER_BACKEND_PASSWORDcan still be supplied from env and is never written to project TOML. - The Postgres database must already exist.
broker initcreates the managed schema/tables inside that database; it does not create the database itself. - Missing backend/plugin errors are distinct from target/auth errors. Invalid schema names, bad passwords, malformed targets, and missing databases are reported as validation or connection failures, not as "backend not available" errors.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file simplebroker_pg-1.1.0.tar.gz.
File metadata
- Download URL: simplebroker_pg-1.1.0.tar.gz
- Upload date:
- Size: 17.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3f006545a0935696b795d967f1f0b0c04401542c3077b926e75f007a906823b6
|
|
| MD5 |
51a82e4798a7734658ca3e5670f615e6
|
|
| BLAKE2b-256 |
e2eb0d4ad555c75c7caaed171ec672738b09eecd233fbd15b3ab1ecd7bf9c480
|
File details
Details for the file simplebroker_pg-1.1.0-py3-none-any.whl.
File metadata
- Download URL: simplebroker_pg-1.1.0-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.9 {"installer":{"name":"uv","version":"0.11.9","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
59c6bb5388fcf9fd440af170db65d5fd4e10b59548de9e1c89637465d14674b3
|
|
| MD5 |
818a076a63ebb8ea4c86390316359fc7
|
|
| BLAKE2b-256 |
22ac38c4efb7242255d91bd5df4568ccf09027b17df15a9a7bd27b21e84db281
|