Skip to content

Commit 9937ed0

Browse files
committed
[IMP] queue_job: refactor runjob
Extract the logic to run one job out of the /queue_job/runjob route. Towards making this logic reusable in other job executors.
1 parent 7c2a76f commit 9937ed0

1 file changed

Lines changed: 17 additions & 18 deletions

File tree

queue_job/controllers/main.py

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,7 @@ def _enqueue_dependent_jobs(self, env, job):
108108
else:
109109
break
110110

111-
@http.route(
112-
"/queue_job/runjob",
113-
type="http",
114-
auth="none",
115-
save_session=False,
116-
readonly=False,
117-
)
118-
def runjob(self, db, job_uuid, **kw):
119-
http.request.session.db = db
120-
env = http.request.env(user=SUPERUSER_ID)
121-
111+
def _runjob(self, env: api.Environment, job: Job) -> None:
122112
def retry_postpone(job, message, seconds=None):
123113
job.env.clear()
124114
with Registry(job.env.cr.dbname).cursor() as new_cr:
@@ -127,10 +117,6 @@ def retry_postpone(job, message, seconds=None):
127117
job.set_pending(reset_retry=False)
128118
job.store()
129119

130-
job = self._acquire_job(env, job_uuid)
131-
if not job:
132-
return ""
133-
134120
try:
135121
try:
136122
self._try_perform_job(env, job)
@@ -151,7 +137,6 @@ def retry_postpone(job, message, seconds=None):
151137
# traceback in the logs we should have the traceback when all
152138
# retries are exhausted
153139
env.cr.rollback()
154-
return ""
155140

156141
except (FailedJobError, Exception) as orig_exception:
157142
buff = StringIO()
@@ -171,8 +156,6 @@ def retry_postpone(job, message, seconds=None):
171156
self._enqueue_dependent_jobs(env, job)
172157
_logger.debug("%s enqueue depends done", job)
173158

174-
return ""
175-
176159
def _get_failure_values(self, job, traceback_txt, orig_exception):
177160
"""Collect relevant data from exception."""
178161
exception_name = orig_exception.__class__.__name__
@@ -187,6 +170,22 @@ def _get_failure_values(self, job, traceback_txt, orig_exception):
187170
"exc_message": exc_message,
188171
}
189172

173+
@http.route(
174+
"/queue_job/runjob",
175+
type="http",
176+
auth="none",
177+
save_session=False,
178+
readonly=False,
179+
)
180+
def runjob(self, db, job_uuid, **kw):
181+
http.request.session.db = db
182+
env = http.request.env(user=SUPERUSER_ID)
183+
job = self._acquire_job(env, job_uuid)
184+
if not job:
185+
return ""
186+
self._runjob(env, job)
187+
return ""
188+
190189
# flake8: noqa: C901
191190
@http.route("/queue_job/create_test_job", type="http", auth="user")
192191
def create_test_job(

0 commit comments

Comments
 (0)