Skip to content

v1.1.0

Choose a tag to compare

@janbjorge janbjorge released this 03 Jul 06:20
bb5bf6a

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

Full Changelog: v1.0.2...v1.1.0