mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-22 08:21:13 -05:00
Check for app_context and request in g to prevent Attribute Errors.
We can add a request_id for tasks that are not spawned by an HTTP request, for example scheduled or nightly tasks. That means you can match up all the tasks spawned by a single task, for example, create-night-billing spawns 4 tasks, those would all have the same idea. Not sure if that is helpful or not. Also it might be confusing to have a request_id for logs that were not started from a request so I have left it out.
This commit is contained in:
@@ -1,10 +1,9 @@
|
|||||||
import time
|
import time
|
||||||
|
|
||||||
from gds_metrics.metrics import Histogram
|
from gds_metrics.metrics import Histogram
|
||||||
from celery import Celery, Task
|
from celery import Celery, Task
|
||||||
from celery.signals import worker_process_shutdown
|
from celery.signals import worker_process_shutdown
|
||||||
from flask import g, request
|
from flask import g, request
|
||||||
from flask.ctx import has_request_context
|
from flask.ctx import has_request_context, has_app_context
|
||||||
|
|
||||||
|
|
||||||
@worker_process_shutdown.connect
|
@worker_process_shutdown.connect
|
||||||
@@ -55,10 +54,9 @@ def make_task(app):
|
|||||||
def apply_async(self, args=None, kwargs=None, task_id=None, producer=None,
|
def apply_async(self, args=None, kwargs=None, task_id=None, producer=None,
|
||||||
link=None, link_error=None, **options):
|
link=None, link_error=None, **options):
|
||||||
kwargs = kwargs or {}
|
kwargs = kwargs or {}
|
||||||
|
|
||||||
if has_request_context() and hasattr(request, 'request_id'):
|
if has_request_context() and hasattr(request, 'request_id'):
|
||||||
kwargs['request_id'] = request.request_id
|
kwargs['request_id'] = request.request_id
|
||||||
elif g.request_id:
|
elif has_app_context() and 'request_id' in g:
|
||||||
kwargs['request_id'] = g.request_id
|
kwargs['request_id'] = g.request_id
|
||||||
|
|
||||||
with SQS_APPLY_ASYNC_DURATION_SECONDS.labels(self.name).time():
|
with SQS_APPLY_ASYNC_DURATION_SECONDS.labels(self.name).time():
|
||||||
|
|||||||
Reference in New Issue
Block a user