fix: include positional args in the deduplication fingerprint (#81)

This commit is contained in:
d3vyce
2026-07-29 10:13:58 +02:00
committed by GitHub
parent 56e82689f8
commit e75b9f3f20
6 changed files with 51 additions and 7 deletions
+4 -2
View File
@@ -33,13 +33,15 @@ async def real_redis():
@pytest.fixture
def make_message():
def _make(task_name="my_task", task_id="task-1", labels=None, kwargs=None):
def _make(
task_name="my_task", task_id="task-1", labels=None, kwargs=None, args=None
):
return TaskiqMessage(
task_id=task_id,
task_name=task_name,
labels=labels or {},
labels_types={},
args=[],
args=args or [],
kwargs=kwargs or {},
)
+21
View File
@@ -86,6 +86,27 @@ class TestDefaultBuildDeduplicationKey:
m1
) == middleware._build_deduplication_key(m2)
def test_different_args_different_key(self, middleware, make_message):
m1 = make_message(args=["a"])
m2 = make_message(args=["b"])
assert middleware._build_deduplication_key(
m1
) != middleware._build_deduplication_key(m2)
def test_arg_order_matters(self, middleware, make_message):
m1 = make_message(args=["a", "b"])
m2 = make_message(args=["b", "a"])
assert middleware._build_deduplication_key(
m1
) != middleware._build_deduplication_key(m2)
def test_key_fields_ignores_args(self, middleware, make_message):
m1 = make_message(args=["a"], labels={DEDUP_KEY_FIELDS_LABEL: ["x"]})
m2 = make_message(args=["b"], labels={DEDUP_KEY_FIELDS_LABEL: ["x"]})
assert middleware._build_deduplication_key(
m1
) == middleware._build_deduplication_key(m2)
def test_key_prefix_in_output(self, make_message):
mw = RedisDeduplicationMiddleware(
redis_url="redis://localhost", key_prefix="myapp:locks"