Skip to content

Commit 46b736e

Browse files
meiravgriGuyAv46
andauthored
Support timeout = 0 in search query (#2934)
* Support query timeout = 0 In RediSearch query timeout = 0 means unlimited timeout. In the current implementation, the query timeout is only updated `if timeout` which in case of 0, translates to false. Since the default timeout of the `query` class is None, replacing the condition with `if self._timeout is not None` will also work for 0. If the parameter is not a positive integer, redis server will raise an exception. related issue: #2928 #2839 * added a test to quety.timeout(0) * raise an exception if query TIMEOUT is a non negative integer * fixed the query test to catach AttributeError * Moved validating timeout to timeout() Raise the exception when the timeout is set instead of when the query is performed * updates test to catch the exception when query.timeout() is called * Update redis/commands/search/query.py Co-authored-by: GuyAv46 <[email protected]> * Revert "Update redis/commands/search/query.py" This reverts commit fb2b710. * Revert "updates test to catch the exception when query.timeout() is called" This reverts commit 6590130. * Revert "Moved validating timeout to timeout()" This reverts commit 7a020bd. * Revert "fixed the query test to catach AttributeError" This reverts commit 25d4ddf. * Revert "raise an exception if query TIMEOUT is a non negative integer" This reverts commit 3fb2c68. --------- Co-authored-by: GuyAv46 <[email protected]>
1 parent 1596ac6 commit 46b736e

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

redis/commands/search/query.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def _get_args_tags(self):
194194
args += self._ids
195195
if self._slop >= 0:
196196
args += ["SLOP", self._slop]
197-
if self._timeout:
197+
if self._timeout is not None:
198198
args += ["TIMEOUT", self._timeout]
199199
if self._in_order:
200200
args.append("INORDER")

tests/test_search.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2264,6 +2264,8 @@ def test_withsuffixtrie(client: redis.Redis):
22642264
def test_query_timeout(r: redis.Redis):
22652265
q1 = Query("foo").timeout(5000)
22662266
assert q1.get_args() == ["foo", "TIMEOUT", 5000, "LIMIT", 0, 10]
2267+
q1 = Query("foo").timeout(0)
2268+
assert q1.get_args() == ["foo", "TIMEOUT", 0, "LIMIT", 0, 10]
22672269
q2 = Query("foo").timeout("not_a_number")
22682270
with pytest.raises(redis.ResponseError):
22692271
r.ft().search(q2)

0 commit comments

Comments
 (0)