mirror of https://github.com/rq/rq.git
Added depends_on to job decorator
This commit is contained in:
parent
dbcba85815
commit
46c96f9481
|
@ -31,7 +31,11 @@ class job(object):
|
||||||
queue = Queue(name=self.queue, connection=self.connection)
|
queue = Queue(name=self.queue, connection=self.connection)
|
||||||
else:
|
else:
|
||||||
queue = self.queue
|
queue = self.queue
|
||||||
|
if 'depends_on' in kwargs:
|
||||||
|
depends_on = kwargs.pop('depends_on')
|
||||||
|
else:
|
||||||
|
depends_on = None
|
||||||
return queue.enqueue_call(f, args=args, kwargs=kwargs,
|
return queue.enqueue_call(f, args=args, kwargs=kwargs,
|
||||||
timeout=self.timeout, result_ttl=self.result_ttl)
|
timeout=self.timeout, result_ttl=self.result_ttl, depends_on=depends_on)
|
||||||
f.delay = delay
|
f.delay = delay
|
||||||
return f
|
return f
|
||||||
|
|
|
@ -48,3 +48,25 @@ class TestDecorator(RQTestCase):
|
||||||
return 'Why hello'
|
return 'Why hello'
|
||||||
result = hello.delay()
|
result = hello.delay()
|
||||||
self.assertEqual(result.result_ttl, 10)
|
self.assertEqual(result.result_ttl, 10)
|
||||||
|
|
||||||
|
def test_decorator_accepts_result_depends_on_as_argument(self):
|
||||||
|
"""Ensure that passing in depends_on to the decorator sets the
|
||||||
|
correct dependency on the job
|
||||||
|
"""
|
||||||
|
|
||||||
|
@job(queue='queue_name')
|
||||||
|
def foo():
|
||||||
|
return 'Firstly'
|
||||||
|
|
||||||
|
@job(queue='queue_name')
|
||||||
|
def bar():
|
||||||
|
return 'Secondly'
|
||||||
|
|
||||||
|
foo_job = foo.delay()
|
||||||
|
bar_job = bar.delay(depends_on=foo_job)
|
||||||
|
|
||||||
|
self.assertIsNone(foo_job._dependency_id)
|
||||||
|
|
||||||
|
self.assertEqual(bar_job.dependency, foo_job)
|
||||||
|
|
||||||
|
self.assertEqual(bar_job._dependency_id, foo_job.id)
|
||||||
|
|
Loading…
Reference in New Issue