fix: replace assert with RuntimeError for missing startup and document lifecycle requirement (#16)

This commit is contained in:
d3vyce
2026-05-04 19:09:32 +02:00
committed by GitHub
parent 84fff031df
commit 66b418bff1
2 changed files with 14 additions and 2 deletions
+8 -2
View File
@@ -84,7 +84,10 @@ class RedisDeduplicationMiddleware(TaskiqMiddleware):
return int(labels.get(DEDUP_TTL_LABEL, self.default_ttl)) return int(labels.get(DEDUP_TTL_LABEL, self.default_ttl))
async def _release_if_owned(self, key: str, task_id: str) -> None: 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) released = await check_and_delete(self._redis, key, task_id)
if released: if released:
logger.debug("Released lock %s", key) logger.debug("Released lock %s", key)
@@ -95,7 +98,10 @@ class RedisDeduplicationMiddleware(TaskiqMiddleware):
if not self._is_enabled(message.labels): if not self._is_enabled(message.labels):
return message 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) key = self._build_deduplication_key(message)
if key is None: if key is None:
logger.warning( logger.warning(
+6
View File
@@ -326,3 +326,9 @@ class TestLifecycle:
async def test_shutdown_without_startup_is_safe(self): async def test_shutdown_without_startup_is_safe(self):
mw = RedisDeduplicationMiddleware(redis_url="redis://localhost") mw = RedisDeduplicationMiddleware(redis_url="redis://localhost")
await mw.shutdown() 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())