Используйте стандартную регистрацию Python в Celery - PullRequest
17 голосов
/ 04 августа 2011

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

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

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

Как я могу реализовать Celery и использовать стандартное ведение журнала Python вместо ведения журнала Celery, чтобы наша старая система ведения журнала не потерялась?

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

Обновление: чтобы добавить ведение журнала приложений в журнале Celery, вы можете выполнить:

$ 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().

1 Ответ

17 голосов
/ 04 августа 2011

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

CELERYD_HIJACK_ROOT_LOGGER = False

Расскажите, как это работает.

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

...