Skip to content

Commit dba1e91

Browse files
committed
Rework where pre and post task hooks are run, and fix tests
1 parent 71f53be commit dba1e91

File tree

2 files changed

+13
-9
lines changed

2 files changed

+13
-9
lines changed

django_dbq/management/commands/worker.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ def _process_job(self):
6161
if not job:
6262
return
6363

64-
job.run_pre_task_hook()
65-
6664
logger.info(
6765
'Processing job: name="%s" queue="%s" id=%s state=%s next_task=%s',
6866
job.name,
@@ -77,7 +75,10 @@ def _process_job(self):
7775

7876
try:
7977
task_function = import_string(job.next_task)
78+
79+
job.run_pre_task_hook()
8080
task_function(job)
81+
8182
job.update_next_task()
8283
if not job.next_task:
8384
job.state = Job.STATES.COMPLETE
@@ -96,6 +97,11 @@ def _process_job(self):
9697
failure_hook_function(job, exception)
9798
else:
9899
logger.info("No failure hook for job id=%s", job.pk)
100+
finally:
101+
try:
102+
job.run_post_task_hook()
103+
except:
104+
logger.exception("Job id=%s post_task_hook failed", job.pk)
99105

100106
logger.info(
101107
'Updating job: name="%s" id=%s state=%s next_task=%s',
@@ -111,8 +117,6 @@ def _process_job(self):
111117
logger.exception("Failed to save job: id=%s", job.pk)
112118
raise
113119

114-
job.run_post_task_hook()
115-
116120
self.current_job = None
117121

118122

django_dbq/tests.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -343,7 +343,7 @@ def test_creation_hook_only_runs_on_create(self):
343343
@override_settings(
344344
JOBS={
345345
"testjob": {
346-
"tasks": ["django_dbq.tests.failing_task"],
346+
"tasks": ["django_dbq.tests.test_task"],
347347
"pre_task_hook": "django_dbq.tests.pre_task_hook",
348348
}
349349
}
@@ -353,15 +353,15 @@ def test_pre_task_hook(self):
353353
job = Job.objects.create(name="testjob")
354354
Worker("default", 1)._process_job()
355355
job = Job.objects.get()
356-
self.assertEqual(job.state, Job.STATES.FAILED)
357-
self.assertEqual(job.workspace["output"], "failure hook ran")
356+
self.assertEqual(job.state, Job.STATES.COMPLETE)
357+
self.assertEqual(job.workspace["output"], "pre task hook ran")
358358
self.assertEqual(job.workspace["job_id"], str(job.id))
359359

360360

361361
@override_settings(
362362
JOBS={
363363
"testjob": {
364-
"tasks": ["django_dbq.tests.failing_task"],
364+
"tasks": ["django_dbq.tests.test_task"],
365365
"post_task_hook": "django_dbq.tests.post_task_hook",
366366
}
367367
}
@@ -371,7 +371,7 @@ def test_post_task_hook(self):
371371
job = Job.objects.create(name="testjob")
372372
Worker("default", 1)._process_job()
373373
job = Job.objects.get()
374-
self.assertEqual(job.state, Job.STATES.FAILED)
374+
self.assertEqual(job.state, Job.STATES.COMPLETE)
375375
self.assertEqual(job.workspace["output"], "post task hook ran")
376376
self.assertEqual(job.workspace["job_id"], str(job.id))
377377

0 commit comments

Comments
 (0)