Source code for django_dd_logger.celery
from functools import wraps
from django_dd_logger.local import Local, release_local # NOQA
local = Local()
[docs]
def get_celery_request():
try:
return local.request
except AttributeError:
return None
def get_task_name(request):
if hasattr(request, "task"):
if isinstance(request.task, str):
return request.task
elif hasattr(request.task, "name"):
return request.task.name
return None
[docs]
def store_celery_request(func):
@wraps(func)
def function_wrapper(*args, **kwargs):
try:
if args and hasattr(args[0], "request"):
request = args[0].request
if (type(request).__module__, type(request).__name__) == (
"celery.app.task",
"Context",
):
local.request = request
return func(*args, **kwargs)
finally:
release_local(local)
return function_wrapper
__all__ = ["local", "get_celery_request", "store_celery_request"]