在业务逻辑模块中使用带有Celery的记录器

时间:2015-10-28 11:43:10

标签: python logging celery

Celery documentation中给出的示例太简单了:

from celery.utils.log import get_task_logger

logger = get_task_logger(__name__)

@app.task
def add(x, y):
    logger.info('Adding {0} + {1}'.format(x, y))
    return x + y

好的,我可以直接在任务中使用celery任务记录器。但是如果我的芹菜任务使用复杂的业务逻辑会发生什么,例如从另一个模块导入,这也正在进行一些日志记录?

@app.task
def add(x, y):
    from business import complex_addition
    return complex_addition(x, y)

business.py

import logging

logger = logging.getLogger('business')

def complex_addition(x, y):
    res = x + y*7 - x*4 + x**2
    logger.info('res=%s', res)
    return res

但是这个记录器没有显示任何东西。当我甚至不知道它在Celery上下文中运行时,如何在我的业务模块中获得芹菜兼容的记录器呢?

理想情况下,所有设置都应在任务级别完成,并且业务模块应保持不变,因为它可以作为芹菜任务的一部分或任何其他类型的上下文运行。可以这样做吗?

0 个答案:

没有答案