Skip to content

PgQueuer v1.0

v1.1.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

postgresql python queue

Affected surfaces

breaking_upgrade

Summary

AI summary

Broad release touches Internal, Highlights, style, and tracing.

Full changelog

Highlights

Context injection is auto-detected (#635)

Handlers that annotate a parameter as Context receive it automatically.
accepts_context=True is no longer needed:

@qm.entrypoint("fetch")
async def fetch(job: Job, ctx: Context) -> None: ...

Explicit accepts_context=True/False still works and overrides detection.
Existing code is unaffected.

Faster dequeue for multi-entrypoint workloads (#668)

The dequeue query now does a per-entrypoint LATERAL lookup using two new
partial indexes on (entrypoint, priority DESC, id) and
(entrypoint, execute_after). Global priority order across entrypoints is
unchanged, and EXPLAIN ANALYZE plan-regression tests guard against future
regressions (#669, #673).

Run pgq upgrade on existing installations to create the new indexes.

--heartbeat-timeout on pgq run (#675)

The heartbeat timeout is now configurable from the CLI.

Fixes

  • schema: the upgrade migration uses the configured status enum type instead
    of a hardcoded name
  • tracing: SentryTracing.trace_process re-raises exceptions; header
    generation yields one header per entrypoint when the SDK is absent
  • stale docstring and import-path corrections

Docs

  • New page: deep dive on FOR UPDATE SKIP LOCKED dequeueing
  • Accuracy fixes in the reliability, retry, completion, performance,
    deployment, and comparison pages
  • README restructured; rate-limiting guide renamed to concurrency-control
  • Brand casing normalized to PgQueuer

Internal

  • from __future__ import annotations in all modules; Sentry and Logfire
    tracing adapters unified on a HAS_X flag pattern; docstring and comment
    cleanup
  • New tests: tracing adapters (#648), entrypoint registration validation (#638)

What's Changed

  • feat(core): auto-detect context injection from handler signature by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/635
  • chore: remove unused scripts and dedupe .gitignore by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/636
  • test(tracing): cover sentry and logfire adapter behaviour by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/648
  • test(qm): cover entrypoint registration input validation by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/638
  • docs: rename rate-limiting guide to concurrency-control by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/640
  • docs: correct setup, integration, and dev details by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/641
  • docs: fix performance, deployment, and comparison accuracy by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/643
  • fix(schema): use configured status type in upgrade migration by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/645
  • docs(guides): correct reliability, retry, and completion semantics by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/642
  • docs(reference): fix incorrect API references by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/639
  • fix(tracing): re-raise from SentryTracing.trace_process by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/646
  • fix(tracing): yield one header per entrypoint when SDK is absent by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/647
  • docs: add FOR UPDATE SKIP LOCKED deep-dive page by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/637
  • docs(agents): exempt MCP tool/prompt docstrings from verbosity rules by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/649
  • chore(queries): drop stale issue ref + commented-out fallback by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/651
  • fix: correct stale docstrings by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/650
  • style: drop banner section headers by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/652
  • style: drop module-docstring preambles by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/653
  • style: trim docstrings + comment cruft across pgqueuer by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/654
  • chore: add 'from future import annotations' to all modules by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/662
  • docs(agents): allow short Usage example blocks on public APIs by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/663
  • style(ports): trim TracingProtocol class docstring by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/661
  • style(completion): trim verbose docstrings by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/660
  • style: trim module docstring preambles by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/659
  • style: drop banner section headers in domain/types by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/658
  • fix(ports): import Job from domain, not shim by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/655
  • refactor(tracing): drop type: ignore on optional-import sentinels by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/656
  • refactor(cli): drop type: ignore on asyncio.run fallback by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/657
  • docs: modernize README with concise structure and fix doc links by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/665
  • style: normalize brand casing PGQueuer -> PgQueuer by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/666
  • perf: dequeue with per-entrypoint LATERAL, add entrypoint-leading indexes by @trim21 in https://github.com/janbjorge/pgqueuer/pull/668
  • test: assert dequeue keeps global priority order across entrypoints by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/669
  • test: dequeue plan-regression guard via EXPLAIN ANALYZE by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/673
  • fix(cli): expose --heartbeat-timeout on pgq run by @janbjorge in https://github.com/janbjorge/pgqueuer/pull/675

Full Changelog: https://github.com/janbjorge/pgqueuer/compare/v1.0.2...v1.1.0

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track PgQueuer v1.0

Get notified when new releases ship.

Sign up free

About PgQueuer v1.0

All releases →

Related context

Related tools

Earlier breaking changes

  • v1.0.0 QueueManager now requires Queries(driver) instead of driver directly; PgQueuer constructor unchanged
  • v1.0.0 RetryWithBackoffEntrypointExecutor renamed to DatabaseRetryEntrypointExecutor and no longer depends on async-timeout
  • v1.0.0 CLI flags --pg-host, --pg-user etc. removed; use libpq environment variables or --pg-dsn instead
  • v1.0.0 Synchronous entrypoint handlers are rejected; only async def is allowed
  • v1.0.0 Custom async Driver must implement notify(channel, payload) method

Beta — feedback welcome: [email protected]