mirror of https://github.com/rq/rq.git
Add the workers connection to _connection_stack
This allows jobs to use get_current_connection() with a resolvable connection. And then these jobs can schedule new jobs for example (my use-case). Or attach information to their job-object. Also pop the pushed connection after running the jobs. This is needed for some tests that check the _connection_stack afterwards;-) And also for use-cases where the workers are used multiple times. fixes nvie/rq#479
This commit is contained in:
parent
bc4fc5595f
commit
acbcea0c66
|
@ -16,7 +16,7 @@ from datetime import timedelta
|
|||
|
||||
from rq.compat import as_text, string_types, text_type
|
||||
|
||||
from .connections import get_current_connection
|
||||
from .connections import get_current_connection, push_connection, pop_connection
|
||||
from .defaults import DEFAULT_RESULT_TTL, DEFAULT_WORKER_TTL
|
||||
from .exceptions import DequeueTimeout
|
||||
from .job import Job, JobStatus
|
||||
|
@ -581,6 +581,9 @@ class Worker(object):
|
|||
self.prepare_job_execution(job)
|
||||
|
||||
with self.connection._pipeline() as pipeline:
|
||||
|
||||
push_connection(self.connection)
|
||||
|
||||
started_job_registry = StartedJobRegistry(job.origin, self.connection)
|
||||
|
||||
try:
|
||||
|
@ -623,6 +626,9 @@ class Worker(object):
|
|||
self.handle_exception(job, *sys.exc_info())
|
||||
return False
|
||||
|
||||
finally:
|
||||
pop_connection()
|
||||
|
||||
self.log.info('{0}: {1} ({2})'.format(green(job.origin), blue('Job OK'), job.id))
|
||||
if rv is not None:
|
||||
log_result = "{0!r}".format(as_text(text_type(rv)))
|
||||
|
|
Loading…
Reference in New Issue