У меня есть следующий в моем tasks.py
каротажа сельдерея в файл внутри Django модули
from celery.utils.log import get_task_logger
logger = get_task_logger("celery.task")
У меня есть протоколирование установки для celery.task
в моих settings.py
и всех бревнах из моего tasks.py
файла правильно записывается в файл.
У меня есть модули Django. Эти модули можно вызывать непосредственно из Django или по заданию Celery. Я хочу, если модуль вызывается Django, тогда журналы должны перейти в файл журнала Django. Если модуль вызывается задачей, журнал должен перейти к журналу задач сельдерея.
Пример:
# tasks.py
from app.foo import MyFoo
@task(name="bar")
def boo():
MyFoo.someFoo()
# app.foo.py
log = logging.getLogger(__name__)
Я хочу, чтобы сообщения журнала внутри MYFOO идти в журнал сельдерея при ведении задачи работника.
Любые идеи?
Спасибо, это позволит мне знать, является ли задача запустить работником или нет. Это не то, что мне нужно. Я обновил вопрос. – ATOzTOA
Это может быть то, что вам нужно. Потому что вы не можете знать, работаете ли вы внутри Clery или внутри Django, прежде чем находитесь внутри функции. Таким образом, это единственный момент, когда вы можете выбрать, какой регистратор использовать локально. –
Однако я предлагаю вам изучить, как настроить регистраторы сельдерея. Поскольку рабочий Celery работает по отдельному процессу, он имеет свои собственные файлы конфигурации, где вы можете настроить обработчики протоколов Python. http://docs.python.org/2/library/logging.html#handler-objects –