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))
|
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(
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
Reference in New Issue
Block a user