From 369a9f7521c4b266b507e0fbe1cc468e64ffbcf7 Mon Sep 17 00:00:00 2001 From: Ben Thorner Date: Wed, 10 Nov 2021 17:38:31 +0000 Subject: [PATCH] Refactor queue_name and request_id into properties This reduces the complexity of the original functions, which will go up a bit in the next commit. --- app/celery/celery.py | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/app/celery/celery.py b/app/celery/celery.py index d44500aec..1173f93a0 100644 --- a/app/celery/celery.py +++ b/app/celery/celery.py @@ -24,15 +24,24 @@ def make_task(app): start = None typing = False + @property + def queue_name(self): + delivery_info = self.request.delivery_info or {} + return delivery_info.get('routing_key', 'none') + + @property + def request_id(self): + # Note that each header is a direct attribute of the + # task context (aka "request"). + return self.request.get('notify_request_id') + def on_success(self, retval, task_id, args, kwargs): elapsed_time = time.monotonic() - self.start - delivery_info = self.request.delivery_info or {} - queue_name = delivery_info.get('routing_key', 'none') app.logger.info( "Celery task {task_name} (queue: {queue_name}) took {time}".format( task_name=self.name, - queue_name=queue_name, + queue_name=self.queue_name, time="{0:.4f}".format(elapsed_time) ) ) @@ -40,25 +49,22 @@ def make_task(app): app.statsd_client.timing( "celery.{queue_name}.{task_name}.success".format( task_name=self.name, - queue_name=queue_name + queue_name=self.queue_name ), elapsed_time ) def on_failure(self, exc, task_id, args, kwargs, einfo): - delivery_info = self.request.delivery_info or {} - queue_name = delivery_info.get('routing_key', 'none') - app.logger.exception( "Celery task {task_name} (queue: {queue_name}) failed".format( task_name=self.name, - queue_name=queue_name, + queue_name=self.queue_name, ) ) app.statsd_client.incr( "celery.{queue_name}.{task_name}.failure".format( task_name=self.name, - queue_name=queue_name + queue_name=self.queue_name ) ) @@ -71,9 +77,7 @@ def make_task(app): # TEMPORARY: remove old piggyback values from kwargs kwargs.pop('request_id', None) # Add 'request_id' to 'g' so that it gets logged. Note - # that each header is a direct attribute of the task - # context (aka "request"). - g.request_id = self.request.get('notify_request_id') + g.request_id = self.request_id return super().__call__(*args, **kwargs)