我有兴趣访问在执行的 Celery 任务期间记录的所有日志消息。
从文档中,我可以为所有任务创建一个记录器,以便将任务的 ID 作为日志的一部分自动报告:
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
@celery.task
def add(x, y):
logger.info('Adding %s + %s', x, y)
return x + y
这会产生这样的日志消息:
[2013-08-09 10:05:02,381: INFO/MainProcess] project.tasks.add[e56cd982-4c20-2328-af55-9cf4d63623df]: Adding 2 + 2
我可以根据报告的任务 ID从中提取相关消息logger
,但这似乎非常低效和不优雅。
此外,我希望能够在task.ready()
返回之前查看日志消息True
(就像在完成之前task.state
给出的那样)。PENDING
我已经阅读了对3.0的 Celery 日志记录改进、Celery 日志记录文档和utils.log
源代码,但似乎找不到任何适合我需要的内容。甚至可以访问挂起任务的日志消息吗?我可以轻松地返回一个StringIO
捕获消息的实例以及我的任务的正常返回值,但我有兴趣在完成之前访问任务的日志。
有小费吗?