Skip to content

Commit 1a2c661

Browse files
chandr-andrs3rius
andauthored
Changed expiration policy (#28)
* Changed expiration policy * Updated docs * Update README.md Co-authored-by: Pavel Kirilin <win10@list.ru> --------- Co-authored-by: Pavel Kirilin <win10@list.ru>
1 parent ad9464f commit 1a2c661

File tree

3 files changed

+18
-8
lines changed

3 files changed

+18
-8
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,10 @@ Brokers parameters:
7171
RedisAsyncResultBackend parameters:
7272
* `redis_url` - url to redis.
7373
* `keep_results` - flag to not remove results from Redis after reading.
74-
* `result_ex_time` - expire time in seconds (by default - 1 minute)
74+
* `result_ex_time` - expire time in seconds (by default - not specified)
7575
* `result_px_time` - expire time in milliseconds (by default - not specified)
76-
> IMPORTANT: You must specify either `result_ex_time` or `result_px_time`.
76+
> IMPORTANT: **It is highly recommended to use expire time ​​in RedisAsyncResultBackend**
77+
> If you want to add expiration, either `result_ex_time` or `result_px_time` must be set.
7778
>```python
7879
># First variant
7980
>redis_async_result = RedisAsyncResultBackend(

taskiq_redis/redis_backend.py

+7-4
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,13 @@ def __init__(
4141
self.result_ex_time = result_ex_time
4242
self.result_px_time = result_px_time
4343

44-
if self.result_ex_time == 0 or self.result_px_time == 0:
44+
unavailable_conditions = any(
45+
(
46+
self.result_ex_time is not None and self.result_ex_time <= 0,
47+
self.result_px_time is not None and self.result_px_time <= 0,
48+
),
49+
)
50+
if unavailable_conditions:
4551
raise ExpireTimeMustBeMoreThanZeroError(
4652
"You must select one expire time param and it must be more than zero.",
4753
)
@@ -51,9 +57,6 @@ def __init__(
5157
"Choose either result_ex_time or result_px_time.",
5258
)
5359

54-
if not self.result_ex_time and not self.result_px_time:
55-
self.result_ex_time = 60
56-
5760
async def shutdown(self) -> None:
5861
"""Closes redis connection."""
5962
await self.redis_pool.disconnect()

tests/test_backend.py

+8-2
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,13 @@ async def test_cant_specify_ex_and_px_params(
132132

133133

134134
@pytest.mark.anyio
135+
@pytest.mark.parametrize(
136+
"ex_time, px_time",
137+
[(0, 0), (-500, 0), (0, -500), (-500, -500)],
138+
)
135139
async def test_ex_or_px_must_be_more_than_zero(
140+
ex_time: int,
141+
px_time: int,
136142
redis_url: str,
137143
) -> None:
138144
"""
@@ -143,8 +149,8 @@ async def test_ex_or_px_must_be_more_than_zero(
143149
with pytest.raises(ExpireTimeMustBeMoreThanZeroError):
144150
RedisAsyncResultBackend(
145151
redis_url,
146-
result_ex_time=0,
147-
result_px_time=0,
152+
result_ex_time=ex_time,
153+
result_px_time=px_time,
148154
)
149155

150156

0 commit comments

Comments
 (0)