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))
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(
+6
View File
@@ -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())