From e9d308c927b76d5e026906c1f05044f9ebef0196 Mon Sep 17 00:00:00 2001 From: Chris Church Date: Thu, 6 Feb 2014 17:44:11 -0500 Subject: [PATCH] AC-1015 Changed where save_job_events task is started so that job events don't appear to be missing when they're stuck in the queue. --- awx/main/tasks.py | 9 ++++++++- awx/plugins/callback/job_event_callback.py | 12 ------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/awx/main/tasks.py b/awx/main/tasks.py index e709d86773..e80e1525c6 100644 --- a/awx/main/tasks.py +++ b/awx/main/tasks.py @@ -26,7 +26,8 @@ import pexpect from kombu import Connection, Exchange, Queue # Celery -from celery import Task, task +from celery import Celery, Task, task +from celery.execute import send_task # Django from django.conf import settings @@ -476,6 +477,12 @@ class RunJob(BaseTask): ''' if job.status in ('pending', 'waiting'): job = self.update_model(job.pk, status='pending') + # Start another task to process job events. + if settings.BROKER_URL.startswith('amqp://'): + app = Celery('tasks', broker=settings.BROKER_URL) + send_task('awx.main.tasks.save_job_events', kwargs={ + 'job_id': job.id, + }, serializer='json') return True elif job.cancel_flag: job = self.update_model(job.pk, status='canceled') diff --git a/awx/plugins/callback/job_event_callback.py b/awx/plugins/callback/job_event_callback.py index adec38751d..18a52e3fb8 100644 --- a/awx/plugins/callback/job_event_callback.py +++ b/awx/plugins/callback/job_event_callback.py @@ -51,10 +51,6 @@ except ImportError: # Kombu from kombu import Connection, Exchange, Queue -# Celery -from celery import Celery -from celery.execute import send_task - class TokenAuth(requests.auth.AuthBase): @@ -96,12 +92,6 @@ class CallbackModule(object): def __del__(self): self._cleanup_connection() - def _start_save_job_events_task(self): - app = Celery('tasks', broker=self.broker_url) - send_task('awx.main.tasks.save_job_events', kwargs={ - 'job_id': self.job_id, - }, serializer='json') - def _publish_errback(self, exc, interval): if self.job_callback_debug: print 'Publish Error: %r, retry in %s seconds, pid=%s' % (exc, interval, os.getpid()) @@ -194,8 +184,6 @@ class CallbackModule(object): if task and event not in self.EVENTS_WITHOUT_TASK: event_data['task'] = task if self.broker_url: - if event == 'playbook_on_start': - self._start_save_job_events_task() self._post_job_event_queue_msg(event, event_data) else: self._post_rest_api_event(event, event_data)