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上下文中运行时,如何在我的业务模块中获得芹菜兼容的记录器呢?
理想情况下,所有设置都应在任务级别完成,并且业务模块应保持不变,因为它可以作为芹菜任务的一部分或任何其他类型的上下文运行。可以这样做吗?