|
1 | 1 | # SPDX-FileCopyrightText: 2023-2024 MTS PJSC |
2 | 2 | # SPDX-License-Identifier: Apache-2.0 |
3 | | -import logging |
4 | 3 | from datetime import datetime, timezone |
5 | 4 |
|
6 | | -import onetl |
7 | | -from asgi_correlation_id import correlation_id |
| 5 | +from asgi_correlation_id.extensions.celery import load_correlation_ids |
8 | 6 | from celery import Celery |
9 | | -from celery.signals import after_setup_logger, before_task_publish, task_prerun |
| 7 | +from celery.signals import after_setup_task_logger |
10 | 8 | from celery.utils.log import get_task_logger |
11 | 9 | from sqlalchemy import select |
12 | 10 | from sqlalchemy.orm import Session, selectinload |
|
20 | 18 | from syncmaster.worker.settings import WorkerAppSettings |
21 | 19 |
|
22 | 20 | logger = get_task_logger(__name__) |
| 21 | +load_correlation_ids() |
23 | 22 |
|
24 | 23 | WORKER_SETTINGS = WorkerAppSettings() |
25 | | -CORRELATION_CELERY_HEADER_ID = WORKER_SETTINGS.worker.CORRELATION_CELERY_HEADER_ID |
26 | 24 |
|
27 | 25 |
|
28 | 26 | @celery.task(name="run_transfer_task", bind=True, track_started=True) |
29 | 27 | def run_transfer_task(self: Celery, run_id: int) -> None: |
30 | | - onetl.log.setup_logging(level=logging.INFO) |
31 | 28 | with Session(self.engine) as session: |
32 | 29 | run_transfer( |
33 | 30 | session=session, |
@@ -83,21 +80,6 @@ def run_transfer(session: Session, run_id: int, settings: WorkerAppSettings): |
83 | 80 | session.commit() |
84 | 81 |
|
85 | 82 |
|
86 | | -@after_setup_logger.connect |
| 83 | +@after_setup_task_logger.connect |
87 | 84 | def setup_loggers(*args, **kwargs): |
88 | 85 | setup_logging(WorkerAppSettings().logging.get_log_config_path()) |
89 | | - |
90 | | - |
91 | | -@before_task_publish.connect() |
92 | | -def transfer_correlation_id(headers, *args, **kwargs) -> None: |
93 | | - # This is called before task.delay() finishes |
94 | | - # Here we're able to transfer the correlation ID via the headers kept in our backend |
95 | | - headers[CORRELATION_CELERY_HEADER_ID] = correlation_id.get() |
96 | | - |
97 | | - |
98 | | -@task_prerun.connect() |
99 | | -def load_correlation_id(task, *args, **kwargs) -> None: |
100 | | - # This is called when the worker picks up the task |
101 | | - # Here we're able to load the correlation ID from the headers |
102 | | - id_value = task.request.get(CORRELATION_CELERY_HEADER_ID) |
103 | | - correlation_id.set(id_value) |
0 commit comments