Skip to content

Commit b367e6c

Browse files
authored
support rq queues default_result_ttl (#693)
1 parent a62e18b commit b367e6c

File tree

5 files changed

+31
-6
lines changed

5 files changed

+31
-6
lines changed

README.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ Installation
5353
'USERNAME': 'some-user',
5454
'PASSWORD': 'some-password',
5555
'DEFAULT_TIMEOUT': 360,
56+
'DEFAULT_RESULT_TTL': 800,
5657
'REDIS_CLIENT_KWARGS': { # Eventual additional Redis connection arguments
5758
'ssl_cert_reqs': None,
5859
},

django_rq/queues.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@ def __init__(self, *args, **kwargs):
6363
super(DjangoRQ, self).__init__(*args, **kwargs)
6464

6565
def original_enqueue_call(self, *args, **kwargs):
66+
from .settings import QUEUES
67+
68+
queue_name = kwargs.get('queue_name') or self.name
69+
kwargs['result_ttl'] = QUEUES[queue_name].get('DEFAULT_RESULT_TTL')
70+
6671
return super(DjangoRQ, self).enqueue_call(*args, **kwargs)
6772

6873
def enqueue_call(self, *args, **kwargs):

django_rq/tests/settings.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,13 @@
8989

9090

9191
RQ_QUEUES = {
92-
'default': {'HOST': REDIS_HOST, 'PORT': 6379, 'DB': 0, 'DEFAULT_TIMEOUT': 500},
92+
'default': {
93+
'HOST': REDIS_HOST,
94+
'PORT': 6379,
95+
'DB': 0,
96+
'DEFAULT_TIMEOUT': 500,
97+
'DEFAULT_RESULT_TTL': 500,
98+
},
9399
'test': {
94100
'HOST': REDIS_HOST,
95101
'PORT': 1,
@@ -120,6 +126,7 @@
120126
'HOST': REDIS_HOST,
121127
'PORT': 6379,
122128
'DB': 1,
129+
'DEFAULT_RESULT_TTL': 800,
123130
},
124131
'async': {
125132
'HOST': REDIS_HOST,

django_rq/tests/test_views.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -265,8 +265,8 @@ def test_scheduled_jobs(self):
265265
response = self.client.get(reverse('rq_scheduled_jobs', args=[queue_index]))
266266
self.assertEqual(response.context['jobs'], [job])
267267

268-
# Test that page doesn't crash when job_id has special characters
269-
queue.enqueue_at(datetime.now(), access_self, job_id="job-!@#$%^&*()_=+[]{};':,.<>?|`~")
268+
# Test that page doesn't crash when job_id has special characters (exclude :)
269+
queue.enqueue_at(datetime.now(), access_self, job_id="job-!@#$%^&*()_=+[]{};',.<>?|`~")
270270
response = self.client.get(reverse('rq_scheduled_jobs', args=[queue_index]))
271271
self.assertEqual(response.status_code, 200)
272272

django_rq/tests/tests.py

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,18 @@ def test_get_queue_serializer(self):
480480
self.assertEqual(queue.name, 'test_serializer')
481481
self.assertEqual(queue.serializer, rq.serializers.JSONSerializer)
482482

483+
def test_enqueue_default_result_ttl(self):
484+
"""Ensure DEFAULT_RESULT_TTL are properly parsed."""
485+
queue = get_queue()
486+
job = queue.enqueue(divide, 1, 1)
487+
self.assertEqual(job.result_ttl, 500)
488+
job.delete()
489+
490+
queue = get_queue('test3')
491+
job = queue.enqueue(divide, 1, 1)
492+
self.assertEqual(job.result_ttl, 800)
493+
job.delete()
494+
483495

484496
@override_settings(RQ={'AUTOCOMMIT': True})
485497
class DecoratorTest(TestCase):
@@ -518,14 +530,14 @@ def test():
518530
self.assertEqual(result.result_ttl, DEFAULT_RESULT_TTL)
519531
result.delete()
520532

521-
@override_settings(RQ={'AUTOCOMMIT': True, 'DEFAULT_RESULT_TTL': 5432})
533+
@override_settings(RQ={'AUTOCOMMIT': True})
522534
def test_job_decorator_result_ttl(self):
523535
@job
524536
def test():
525537
pass
526538

527539
result = test.delay()
528-
self.assertEqual(result.result_ttl, 5432)
540+
self.assertEqual(result.result_ttl, 500, msg='value added in RQ_QUEUES default')
529541
result.delete()
530542

531543
@override_settings(RQ={'AUTOCOMMIT': True, 'DEFAULT_RESULT_TTL': 0})
@@ -535,7 +547,7 @@ def test():
535547
pass
536548

537549
result = test.delay()
538-
self.assertEqual(result.result_ttl, 0)
550+
self.assertEqual(result.result_ttl, 500, msg='value added in RQ_QUEUES default')
539551
result.delete()
540552

541553

0 commit comments

Comments
 (0)