summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimó Albert i Beltran <sim6@bona.gent>2023-02-15 11:17:09 +0100
committerGitHub <noreply@github.com>2023-02-15 17:17:09 +0700
commit5798cddd0463cb2e639469689aaad26cc2bbc28f (patch)
tree1772021db3e97d3bed51666d5118fca4debe380b
parent46b5cf64c348423b253ec86a99c9bcd972478345 (diff)
downloadrq-5798cddd0463cb2e639469689aaad26cc2bbc28f.tar.gz
fix: queue.result_ttl=-1 (#1819)
* test: queue.result_ttl=-1 Signed-off-by: Simó Albert i Beltran <sim6@bona.gent> * test: queue.result_ttl=0 Signed-off-by: Simó Albert i Beltran <sim6@bona.gent> * fix: queue.result_ttl=-1 Signed-off-by: Simó Albert i Beltran <sim6@bona.gent> --------- Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>
-rw-r--r--rq/results.py5
-rw-r--r--tests/test_results.py22
2 files changed, 26 insertions, 1 deletions
diff --git a/rq/results.py b/rq/results.py
index a6dafde..8ff770d 100644
--- a/rq/results.py
+++ b/rq/results.py
@@ -169,7 +169,10 @@ class Result(object):
if pipeline is None:
self.id = result.decode()
if ttl is not None:
- connection.expire(key, ttl)
+ if ttl == -1:
+ connection.persist(key)
+ else:
+ connection.expire(key, ttl)
return self.id
def serialize(self):
diff --git a/tests/test_results.py b/tests/test_results.py
index 4f705f5..9bc1b9e 100644
--- a/tests/test_results.py
+++ b/tests/test_results.py
@@ -214,3 +214,25 @@ class TestScheduledJobRegistry(RQTestCase):
job = queue.enqueue(div_by_zero)
self.assertEqual(job.latest_result().type, Result.Type.FAILED)
+
+ def test_job_return_value_result_ttl_infinity(self):
+ """Test job.return_value when queue.result_ttl=-1"""
+ queue = Queue(connection=self.connection, result_ttl=-1)
+ job = queue.enqueue(say_hello)
+
+ # Returns None when there's no result
+ self.assertIsNone(job.return_value())
+
+ Result.create(job, Result.Type.SUCCESSFUL, ttl=-1, return_value=1)
+ self.assertEqual(job.return_value(), 1)
+
+ def test_job_return_value_result_ttl_zero(self):
+ """Test job.return_value when queue.result_ttl=0"""
+ queue = Queue(connection=self.connection, result_ttl=0)
+ job = queue.enqueue(say_hello)
+
+ # Returns None when there's no result
+ self.assertIsNone(job.return_value())
+
+ Result.create(job, Result.Type.SUCCESSFUL, ttl=0, return_value=1)
+ self.assertIsNone(job.return_value())