diff --git a/engine/engine/celery.py b/engine/engine/celery.py index 480a5570..d6f17fa4 100644 --- a/engine/engine/celery.py +++ b/engine/engine/celery.py @@ -95,3 +95,17 @@ if settings.PYROSCOPE_PROFILER_ENABLED: detect_subprocesses=True, # detect subprocesses started by the main process; default is False tags={"type": "celery", "celery_worker": os.environ.get("CELERY_WORKER_QUEUE", "no_queue_specified")}, ) + + +if settings.LOG_CELERY_TASK_ARGUMENTS: + """ + Note: Task ID and name are already provided in TaskFormatter prefix, arguments get listed in message + """ + + @celery.signals.task_prerun.connect + def log_started_task_arguments(sender=None, task_id=None, task=None, args=None, kwargs=None, **extras): + logger.info(f"task started args={args} kwargs={kwargs}") + + @celery.signals.task_postrun.connect + def log_finished_task_arguments(sender=None, task_id=None, task=None, args=None, kwargs=None, **extras): + logger.info(f"task finished args={args} kwargs={kwargs}") diff --git a/engine/settings/base.py b/engine/settings/base.py index 36de8578..ecdac1a1 100644 --- a/engine/settings/base.py +++ b/engine/settings/base.py @@ -352,7 +352,7 @@ if OTEL_TRACING_ENABLED: MIDDLEWARE.insert(0, "engine.middlewares.LogRequestHeadersMiddleware") LOG_REQUEST_ID_HEADER = "HTTP_X_CLOUD_TRACE_CONTEXT" - +LOG_CELERY_TASK_ARGUMENTS = getenv_boolean("LOG_CELERY_TASK_ARGUMENTS", default=True) log_fmt = "source=engine:app google_trace_id=%(request_id)s logger=%(name)s %(message)s"