mirror of
https://github.com/d3vyce/taskiq-deduplication.git
synced 2026-08-04 19:14:07 +00:00
fix: skip deduplication for non-JSON-serializable kwargs instead of raising TypeError (#12)
This commit is contained in:
@@ -92,7 +92,7 @@ class TestDefaultBuildDeduplicationKey:
|
||||
mw._redis = None
|
||||
m = make_message()
|
||||
key = mw._build_deduplication_key(m)
|
||||
assert key.startswith("myapp:locks:")
|
||||
assert key is not None and key.startswith("myapp:locks:")
|
||||
|
||||
def test_empty_kwargs_produces_consistent_key(self, middleware, make_message):
|
||||
m1 = make_message(kwargs={})
|
||||
@@ -128,6 +128,10 @@ class TestDefaultBuildDeduplicationKey:
|
||||
)
|
||||
assert middleware._build_deduplication_key(m) == "taskiq:deduplication:my-lock"
|
||||
|
||||
def test_non_serializable_kwargs_returns_none(self, middleware, make_message):
|
||||
m = make_message(kwargs={"dt": object()})
|
||||
assert middleware._build_deduplication_key(m) is None
|
||||
|
||||
|
||||
class TestPreSend:
|
||||
@pytest.mark.anyio
|
||||
@@ -174,6 +178,15 @@ class TestPreSend:
|
||||
await middleware.pre_send(make_message(kwargs={"x": 1}))
|
||||
await middleware.pre_send(make_message(kwargs={"x": 2}))
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_non_serializable_kwargs_skips_deduplication(
|
||||
self, middleware, make_message
|
||||
):
|
||||
msg1 = make_message(kwargs={"dt": object()})
|
||||
msg2 = make_message(kwargs={"dt": object()})
|
||||
await middleware.pre_send(msg1)
|
||||
await middleware.pre_send(msg2) # should not raise
|
||||
|
||||
@pytest.mark.anyio
|
||||
async def test_default_ttl_applied(self, fake_redis, make_message):
|
||||
mw = RedisDeduplicationMiddleware(redis_url="redis://localhost", default_ttl=77)
|
||||
|
||||
Reference in New Issue
Block a user