Celery - имя PoolWorker для файлов журнала - PullRequest
0 голосов
/ 29 мая 2020

Я хотел бы создать файлы журнала для каждого работника пула (примерно так же, как они создаются с параметром --logfile). Я знаю, как записать имя основного рабочего с помощью celeryd_init, поэтому я могу настроить файл журнала для основного рабочего на after_setup_logger, но я понятия не имею, где получить идентификатор PoolWorker для настройки журналов для них.

def captureWorkerName(sender, instance, **kwargs):
    app.conf.workerName = str(sender)

@after_setup_logger.connect
def setup_loggers(logger, *args, **kwargs):
       formatter = logging.Formatter(app.conf.logWorkerFormat)
       for handler in logger.handlers:
            handler.setFormatter(formatter)

        logFileName = rootDir + f"{app.conf.workerName}" + '.log'
        Path(rootDir).mkdir(parents=True, exist_ok=True)
        fh = GroupWriteRotatingFileHandler(logFileName, when='midnight', backupCount=30)
        fh.setFormatter(formatter)
        logger.addHandler(fh)

@after_setup_task_logger.connect
def setup_task_logger(logger, *args, **kwargs):
       formatter = TaskFormatter(cls.app.conf.logTaskFormat)
       for handler in logger.handlers:
            handler.setFormatter(formatter)

       workerPoolID = ???????
       logFileName = rootDir + f"{app.conf.workerName}" + '-' + workerPoolID  +'.log'
       Path(rootDir).mkdir(parents=True, exist_ok=True)
       fh = GroupWriteRotatingFileHandler(logFileName, when='midnight', backupCount=30)
       fh.setFormatter(formatter)
       logger.addHandler(fh)
    ```
...