Skip to content

Releases: g4st3r-d3v/akadze

v0.6.1

Choose a tag to compare

@github-actions github-actions released this 02 Nov 15:35
8f7215f

Release 0.6.1 of akadze.

v0.6.0

Choose a tag to compare

@g4st3r-d3v g4st3r-d3v released this 29 Oct 10:00
3b80086

Breaking

  • A run that returns while a cancel is pending ends succeeded with its result, not cancelled (#52).

Fixes

  • Limits hold when a claim waits on another claimer's lock (#46).
  • The worker keeps serving through transient database errors; a failed outcome write does not rerun the job (#47).
  • Task arguments arrive as their declared types (#48).
  • A worker claims only tasks it has registered (#49). Upgrade akadze on all workers before adding new tasks.
  • A sync task registered with timeout logs a warning (#50).
  • 0.5.0 audit tail: jobs cancel exit code, migration checker, drain readiness, overlap=False docs (#51). Migration 005_jobs_meta builds a GIN index that blocks writes to akadze.jobs; on a large table create it CONCURRENTLY first (see docs).

Performance

  • Claim reads the queue in windows: fair claim and claims past a key at its limit go from 90–310 ms to 3–18 ms on 100k jobs (#53).

Docs


Note

Low Risk
Version and documentation-only changes with no application or worker logic in the diff.

Overview
Releases akadze 0.6.0 by bumping __version__ and Poetry version from 0.5.0 to 0.6.0.

Documentation is updated so readers no longer see “main is ahead of PyPI (0.5.0)”. The home pages (EN/RU) now say docs track main, point “since 0.6.0” markers at behavior from that release, and link to GitHub release notes for upgrades. Claim docs (EN/RU) state windowed claim ships in 0.6.0 and later instead of “first release after 0.5.0”. Cancel-on-running-job notes in the retries guides (EN/RU) drop the awkward “on PyPI” wording while keeping the 0.6.0 vs 0.5.0 behavior contrast.

Reviewed by Cursor Bugbot for commit 23e74aa. Bugbot is set up for automated code reviews on this repo. Configure here.

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 20 Oct 18:44
f0d6394

akadze 0.5.0

Product features for multi-tenant and scheduled workloads, and a much cheaper claim. Run akadze migrate after upgrading (adds an index; see below).

New

  • Cron in a timezone — @app.periodic(..., timezone="Europe/Berlin"), also in add_schedule / schedule specs. DST follows classic cron: fixed-hour entries fire once when clocks go back, wildcard-hour entries keep firing; skipped wall times fire shifted by the gap. (#38)
  • Backoff policy — @app.task(..., backoff=fn) / app.register / @app.periodic, fn(attempt) -> timedelta; type akadze.BackoffPolicy. (#39)
  • Bulk enqueue — task.using(...).enqueue_many(items): one statement per 1000 rows, all-or-nothing, in the caller's transaction (10 000 jobs ≈ 0.07 s). (#40)
  • Job meta — using(meta={...}), list_jobs(meta=...), akadze jobs list --meta k=v, JobSummary.meta (read-only), Job.meta in hooks. (#41)
  • Fair claim — Worker(fair=True) / akadze worker --fair: within a priority, a free slot goes to the limit_key group with the fewest running jobs. (#42)

Changed

  • Default retry backoff now has jitter in [50 %, 100 %] of 2^(attempt-1) s (cap 300 s). Jobs requeued from a lost worker get the same jittered delay instead of all starting at once. (#39)
  • A negative Retry/Snooze delay means "now" instead of failing the finish; policy delays are clamped to [0, 365 days]. (#39)
  • The default claim reads the head of the queue first: ~18 ms instead of ~330 ms per claim on a 100 000-job backlog. Fair claims still scan the queue. (#43)
  • tzdata is a runtime dependency. (#38)

Migration

  • 005_jobs_meta builds a GIN index on akadze.jobs.meta. It blocks writes to akadze.jobs while it builds; on a large table pre-build it with CREATE INDEX CONCURRENTLY IF NOT EXISTS jobs_meta_idx ON akadze.jobs USING gin (meta jsonb_path_ops).

Docs

  • Public surface and versioning policy are pinned by a test of akadze.__all__. (#44)

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 20 Oct 17:20
70e0509

Release 0.4.1 of akadze.

v0.4.0

Choose a tag to compare

@cursor cursor released this 13 Oct 15:37
ce1503d

Alpha DX для замены Celery: расписания из конфига приложения и регистрация задач без global bind.

Новое

  • app.add_schedule / app.add_schedules — cron/every для уже зарегистрированной задачи; YAML/TOML парсит приложение, не пакет
  • app.register(fn, name=…) — unbound-регистрация; @app.task идёт тем же путём
  • README: статус alpha (0.3.x→0.4.x) и короткий stub миграции с Celery (unique_key, limit_key, using(...).enqueue / complete_tx, Snooze)

Не ломает

Аддитивный релиз относительно 0.3.0. Новых SQL-миграций нет (001–004 как раньше).

Ops CLI (jobs / queues / limits / workers / metrics) без изменений с 0.3.0.

v0.3.0

Choose a tag to compare

@cursor cursor released this 11 Oct 22:08
40f8f47

Операционный CLI поверх Wave 3 и одно ломающее изменение в limit_key.

Ломающее относительно 0.2.0

Если у задачи задан limit_key, а строки с этим ключом в akadze.limits нет, claim больше не блокирует задачу. Воркер считает, что лимита нет. В 0.2.0 такая задача оставалась в queued навсегда.

clear_limit теперь реально снимает ограничение: удаляет строку из akadze.limits, и задачи с этим ключом снова берутся в работу.

Новой миграции схемы нет. Достаточно уже накатанных 001–004.

Новое

  • akadze jobs cancel JOB_ID — ставит запрос на отмену через request_cancel
  • list_limits / clear_limit и CLI akadze limits list, akadze limits clear KEY
  • list_workers и CLI akadze workers list
  • CLI akadze metrics (и akadze metrics render) печатает текст из render_metrics
  • Akadze.include("pkg.mod") — импортирует модуль и вызывает register(app)

Оператору

akadze limits list
akadze workers list
akadze metrics

Переменная окружения та же: AKADZE_DATABASE_URL.

v0.2.0

Choose a tag to compare

@cursor cursor released this 11 Oct 17:10
2ab4e19

Wave 3 ops and cluster limits on top of 0.1.x.

  • list_jobs / akadze jobs list (no args/result in summaries)
  • requeue for failed jobs; pause_queue / resume_queue
  • Cluster concurrency via limit_key + set_limit(max_running=…)
  • Start rate via set_limit(max_starts=…, window=…)
  • akadze.metrics.render_metrics → Prometheus text (no HTTP)

Schema migrations: 002_queue_pauses, 003_limits, 004_start_rate (kept separate).

v0.1.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 10:07

Release 0.1.1 of akadze.

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 09:35
6dfcc91

Release 0.1.0 of akadze.