Подтвердить что ты не робот

Использовать стандартную регистрацию Python в сельдерее

Мне нужно внедрить сельдерей в уже существующую систему. В предыдущей версии системы уже использовались стандартные протоколы Python.

Мой код похож на приведенный ниже код. Процесс один и два процесса - это нецелевые функции, которые регистрируются повсюду. Мы используем ведение журнала для отслеживания потери данных, если что-то не так.

@task
def add(x,y):
    process_one(x,y)
    process_two(x,y)

Как я могу реализовать сельдерей и использовать стандартное ведение журнала Python вместо регистрации сельдерея, поэтому наша старая система регистрации не потеряна?

Я попытался изменить import logging из Python на: logger = add.get_logger() и передать logger ко всем функциям, но я не думаю, что это хорошая практика. Мне нужно другое решение.

Обновление: для добавления журнала приложений в журнал регистрации сельдерея вы можете выполнить:

$ manage.py celeryd -v 2 -B -s celery -E -l debug --traceback \
  --settings=settings --logfile=/(path to your log folder)/celeryd.log

С -l (ведение журнала) в качестве debug наше ведение журнала приложений /Python автоматически включается в наш журнал Celery: нет необходимости выполнять logger = add.get_logger().

4b9b3361

Ответ 1

Вероятно, вам нужен этот параметр:

CELERYD_HIJACK_ROOT_LOGGER = False

Расскажите мне, как это получается.

Btw, причина, по которой он захватывает корневой регистратор, объясняется тем, что некоторые плохо написаны библиотеки настраивают ведение журнала, что-то, что библиотека никогда не должна делать, в результате чего пользователи не получают выход из celeryd рабочий: (