Always call job.save even on synchronous queues so get_current_job doesn't fail

main
Selwin Ong 12 years ago committed by Vincent Driessen
parent 10237ddcb4
commit f498de57b6

@ -172,9 +172,9 @@ class Queue(object):
job.timeout = timeout # _timeout_in_seconds(timeout) job.timeout = timeout # _timeout_in_seconds(timeout)
else: else:
job.timeout = 180 # default job.timeout = 180 # default
job.save()
if self._async: if self._async:
job.save()
self.push_job_id(job.id) self.push_job_id(job.id)
else: else:
job.perform() job.perform()

@ -6,6 +6,7 @@ from tests.helpers import strip_milliseconds
from cPickle import loads from cPickle import loads
from rq.job import Job, get_current_job from rq.job import Job, get_current_job
from rq.exceptions import NoSuchJobError, UnpickleError from rq.exceptions import NoSuchJobError, UnpickleError
from rq.queue import Queue
class TestJob(RQTestCase): class TestJob(RQTestCase):
@ -211,3 +212,10 @@ class TestJob(RQTestCase):
id = job.perform() id = job.perform()
self.assertEqual(job.id, id) self.assertEqual(job.id, id)
self.assertEqual(job.func, access_self) self.assertEqual(job.func, access_self)
# Ensure that get_current_job also works from within synchronous jobs
queue = Queue(async=False)
job = queue.enqueue(access_self)
id = job.perform()
self.assertEqual(job.id, id)
self.assertEqual(job.func, access_self)

Loading…
Cancel
Save