mirror of
https://github.com/d3vyce/taskiq-deduplication.git
synced 2026-08-04 19:14:07 +00:00
fix: replace assert with RuntimeError for missing startup and document lifecycle requirement (#16)
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user