Skip to content

Release history

PgQueuer v1.0 releases

All releases

17 shown

No immediate action
v1.0.2 Bug fix

Stale‑job unblock

No immediate action
v1.0.1 Bug fix

Windows psycopg selector loop fix

Upgrade now
v1.0.0 Breaking risk
Breaking upgrade

Async‑only API + retry schema

No immediate action
v0.26.3 Bug fix

Crash propagation

No immediate action
v0.26.2 Maintenance

Routine maintenance and dependency updates.

No immediate action
v0.26.1 Bug fix

Scheduler race condition fix

No immediate action
v0.26.0 Breaking risk

Hexagonal architecture + In‑memory adapter + Prometheus

No immediate action
v0.25.3 Bug fix

Model validation fix

Review required
v0.25.2 New feature
Auth

HTTP enqueue + connection constructors + context

No immediate action
v0.25.1 Bug fix

Stale job reclamation

No immediate action
v0.25.0 New feature

Python 3.14 support

No immediate action
v0.24.3 Maintenance

Routine maintenance and dependency updates.

No immediate action
v0.24.2 Maintenance

Routine maintenance and dependency updates.

No immediate action
v0.24.1 New feature

Logfire integration

0.24.0 Breaking risk
⚠ Upgrade required
  • Run `pgqueuer upgrade` or manually execute `ALTER TABLE pgqueuer ADD COLUMN IF NOT EXISTS headers JSONB;` before deploying the new version.
  • To revert to v0.23.x, drop the `headers` column with `ALTER TABLE pgqueuer DROP COLUMN headers;`.
Breaking changes
  • Adds a `headers` JSONB column to the `pgqueuer` table; applications will fail to start without this migration.
Notable features
  • Per‑job headers via `enqueue(..., headers=…)` and `Job.headers`.
  • Drain benchmark strategy in `tools/benchmark.py` for measuring queue emptying time.
Full changelog

PGQueuer v0.24.0 — breaking release 💥

Overview
v0.24.0 adds per-job metadata via a new headers column. This requires a one-time database migration before upgrading.


🔴 Breaking Change: New headers column

  • What: Adds a headers JSONB column to the queue table and a matching Job.headers field.

  • Why: Enables arbitrary key/value metadata on jobs.

  • Impact if skipped:

    • The application will fail to start because the column is missing.
    • Enqueues/dequeues that specify headers will raise errors.

🛠 Migration Guide

  1. Automatic upgrade (recommended)
    Run the built-in CLI upgrade command:

    pgqueuer upgrade
    

    This will execute an ALTER TABLE similar to:

    ALTER TABLE pgqueuer ADD COLUMN IF NOT EXISTS headers JSONB;
    
  2. Manual migration
    If you manage migrations yourself, apply the above ALTER TABLE in your migration tool of choice before deploying the new code.

  3. Rollback
    If you must revert to v0.23.x, drop the column or ignore it—older versions will simply not use it:

    ALTER TABLE pgqueuer DROP COLUMN headers;
    

✨ New

  • Per-job headers via enqueue(..., headers=…) and Job.headers. (#429)

  • Drain benchmark strategy

    python3 tools/benchmark.py --strategy drain --jobs 50000 --dequeue 5 --dequeue-batch-size 10
    

    Enqueues a fixed number of jobs and measures time to empty the queue. (#423)


✨ Improvements

  • Heartbeats fire twice as often to avoid premature retries (#431)
  • tools/benchmark.py refactored into a strategy pattern (ThroughputSettings, DrainSettings) (#422)
  • timeout_with_jitter now validates span bounds and raises on invalid input (#c7241bf)

🐛 Bug Fixes

  • Jobs are no longer retried while still running (#431)
  • Retry tests stabilised and simplified (#431)

🧪 Testing & CI

  • Removed redundant @pytest.mark.asyncio decorators (#432)
  • Removed icecream debug prints from tests (#c7241bf)
  • CI benchmarks both throughput and drain strategies (#423)
  • Added test_heartbeat_keeps_buffer_ticking (#431)

📝 Documentation

| Area | Change | PR |
| ------------ | ------------------------------------------------------- | ---- |
| Architecture | Added job-status lifecycle section with Mermaid diagram | #421 |
| Benchmark | Documented drain strategy in docs/benchmark.md | #423 |


House-keeping

  • Streamlined imports, added -> None hints, introduced nullcontext in tests (#432)
  • Benchmark artifact commit messages now include the strategy name (#423)

Thanks to @AntonKarabaza for reporting #430 – your detailed report made the fix possible!

Full Changelog: https://github.com/janbjorge/pgqueuer/compare/v0.23.2...v0.24.0

No immediate action
0.23.2 Breaking risk

autovacuum optimize

No immediate action
v0.23.1 Breaking risk

TTLCache expiration fix

Beta — feedback welcome: [email protected]