Added checks for 0 ttl (#1110)

main
Selwin Ong 6 years ago committed by GitHub
parent 8df4e8ecfa
commit b14c4e288d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -231,10 +231,19 @@ class Queue(object):
and kwargs as explicit arguments. Any kwargs passed to this function and kwargs as explicit arguments. Any kwargs passed to this function
contain options for RQ itself. contain options for RQ itself.
""" """
timeout = parse_timeout(timeout) or self._default_timeout timeout = parse_timeout(timeout)
if timeout is None:
timeout = self._default_timeout
elif timeout == 0:
raise ValueError('0 timeout is not allowed. Use -1 for infinite timeout')
result_ttl = parse_timeout(result_ttl) result_ttl = parse_timeout(result_ttl)
failure_ttl = parse_timeout(failure_ttl) failure_ttl = parse_timeout(failure_ttl)
ttl = parse_timeout(ttl) ttl = parse_timeout(ttl)
if ttl is not None and ttl <= 0:
raise ValueError('Job ttl must be greater than 0')
job = self.job_class.create( job = self.job_class.create(
func, args=args, kwargs=kwargs, connection=self.connection, func, args=args, kwargs=kwargs, connection=self.connection,

@ -237,6 +237,12 @@ class TestQueue(RQTestCase):
None None
) )
self.assertEqual(q.count, 0) self.assertEqual(q.count, 0)
def test_enqueue_with_ttl(self):
"""Negative TTL value is not allowed"""
queue = Queue()
self.assertRaises(ValueError, queue.enqueue, echo, 1, ttl=0)
self.assertRaises(ValueError, queue.enqueue, echo, 1, ttl=-1)
def test_enqueue_sets_status(self): def test_enqueue_sets_status(self):
"""Enqueueing a job sets its status to "queued".""" """Enqueueing a job sets its status to "queued"."""
@ -264,6 +270,13 @@ class TestQueue(RQTestCase):
job = queue.enqueue(echo, 1, job_timeout=15) job = queue.enqueue(echo, 1, job_timeout=15)
self.assertEqual(job.timeout, 15) self.assertEqual(job.timeout, 15)
# Not passing job_timeout will use queue._default_timeout
job = queue.enqueue(echo, 1)
self.assertEqual(job.timeout, queue._default_timeout)
# job_timeout = 0 is not allowed
self.assertRaises(ValueError, queue.enqueue, echo, 1, job_timeout=0)
def test_default_timeout(self): def test_default_timeout(self):
"""Timeout can be passed via job_timeout argument""" """Timeout can be passed via job_timeout argument"""
queue = Queue() queue = Queue()

Loading…
Cancel
Save