From 84fff031df71d13cf696f459238968108ef4278e Mon Sep 17 00:00:00 2001 From: d3vyce <44915747+d3vyce@users.noreply.github.com> Date: Mon, 4 May 2026 19:04:12 +0200 Subject: [PATCH] fix: correct stale metadata and remove outdated worker-side detection feature bullet (#14) --- README.md | 4 ++-- docs/index.md | 4 ++-- pyproject.toml | 4 ++-- src/taskiq_deduplication/__init__.py | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6b34072..be73c48 100644 --- a/README.md +++ b/README.md @@ -50,8 +50,8 @@ except DuplicateTaskError: ## Features -- **Sender-side deduplication** — rejects duplicate tasks at dispatch time via a Redis queue lock, before they reach the broker. -- **Worker-side detection** — logs concurrent duplicate executions without raising, keeping `SmartRetryMiddleware` safe from retry storms. +- **Sender-side deduplication** — rejects duplicate tasks at dispatch time via a Redis lock, before they reach the broker. +- **Atomic lock release** — lock is released on completion or error via a Lua check-and-delete; only the owning task can release its lock. - **Configurable TTL** — set a global default or override per task with the `deduplication_ttl` label. - **Explicit lock key** — pin any task to a fixed Redis key with `deduplication_key`, bypassing fingerprint computation entirely. - **Partial fingerprint** — deduplicate on a subset of kwargs with `deduplication_key_fields`, ignoring irrelevant arguments. diff --git a/docs/index.md b/docs/index.md index 846fb03..2527d55 100644 --- a/docs/index.md +++ b/docs/index.md @@ -50,8 +50,8 @@ except DuplicateTaskError: ## Features -- **Sender-side deduplication** — rejects duplicate tasks at dispatch time via a Redis queue lock, before they reach the broker. -- **Worker-side detection** — logs concurrent duplicate executions without raising, keeping `SmartRetryMiddleware` safe from retry storms. +- **Sender-side deduplication** — rejects duplicate tasks at dispatch time via a Redis lock, before they reach the broker. +- **Atomic lock release** — lock is released on completion or error via a Lua check-and-delete; only the owning task can release its lock. - **Configurable TTL** — set a global default or override per task with the `deduplication_ttl` label. - **Explicit lock key** — pin any task to a fixed Redis key with `deduplication_key`, bypassing fingerprint computation entirely. - **Partial fingerprint** — deduplicate on a subset of kwargs with `deduplication_key_fields`, ignoring irrelevant arguments. diff --git a/pyproject.toml b/pyproject.toml index 24f7344..f3a13f0 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,7 +1,7 @@ [project] name = "taskiq-deduplication" version = "1.0.1" -description = "Production-ready utilities for FastAPI applications" +description = "Redis-backed deduplication middleware for Taskiq" readme = "README.md" license = "MIT" license-files = ["LICENSE"] @@ -9,7 +9,7 @@ requires-python = ">=3.10" authors = [ { name = "d3vyce", email = "contact@d3vyce.fr" } ] -keywords = ["fastapi", "sqlalchemy", "postgresql"] +keywords = ["taskiq", "redis", "deduplication", "middleware", "task-queue"] classifiers = [ "Development Status :: 5 - Production/Stable", "Framework :: AsyncIO", diff --git a/src/taskiq_deduplication/__init__.py b/src/taskiq_deduplication/__init__.py index 5016f0c..2b2d4e4 100644 --- a/src/taskiq_deduplication/__init__.py +++ b/src/taskiq_deduplication/__init__.py @@ -1,4 +1,4 @@ -"""FastAPI utilities package.""" +"""Redis-backed deduplication middleware for Taskiq.""" from .middleware import DuplicateTaskError, RedisDeduplicationMiddleware