From 66b418bff1c8f03324d32393fb83f3426271d912 Mon Sep 17 00:00:00 2001 From: d3vyce <44915747+d3vyce@users.noreply.github.com> Date: Mon, 4 May 2026 19:09:32 +0200 Subject: [PATCH] fix: replace assert with RuntimeError for missing startup and document lifecycle requirement (#16) --- src/taskiq_deduplication/middleware.py | 10 ++++++++-- tests/test_middleware.py | 6 ++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/taskiq_deduplication/middleware.py b/src/taskiq_deduplication/middleware.py index 8559f28..8f79d12 100644 --- a/src/taskiq_deduplication/middleware.py +++ b/src/taskiq_deduplication/middleware.py @@ -84,7 +84,10 @@ class RedisDeduplicationMiddleware(TaskiqMiddleware): return int(labels.get(DEDUP_TTL_LABEL, self.default_ttl)) async def _release_if_owned(self, key: str, task_id: str) -> None: - assert self._redis is not None + if self._redis is None: + raise RuntimeError( + "RedisDeduplicationMiddleware.startup() was never called." + ) released = await check_and_delete(self._redis, key, task_id) if released: logger.debug("Released lock %s", key) @@ -95,7 +98,10 @@ class RedisDeduplicationMiddleware(TaskiqMiddleware): if not self._is_enabled(message.labels): return message - assert self._redis is not None + if self._redis is None: + raise RuntimeError( + "RedisDeduplicationMiddleware.startup() was never called." + ) key = self._build_deduplication_key(message) if key is None: logger.warning( diff --git a/tests/test_middleware.py b/tests/test_middleware.py index e454701..7387ba3 100644 --- a/tests/test_middleware.py +++ b/tests/test_middleware.py @@ -326,3 +326,9 @@ class TestLifecycle: async def test_shutdown_without_startup_is_safe(self): mw = RedisDeduplicationMiddleware(redis_url="redis://localhost") await mw.shutdown() + + @pytest.mark.anyio + async def test_pre_send_without_startup_raises_runtime_error(self, make_message): + mw = RedisDeduplicationMiddleware(redis_url="redis://localhost") + with pytest.raises(RuntimeError, match="startup"): + await mw.pre_send(make_message())