Celery在django环境下生成任务独立的log日志

本文介绍了在Django框架下,如何利用Celery进行异步任务处理,以提升用户体验。同时,针对不同任务类型日志记录的挑战,详细阐述了如何配置Celery的内置logging模块,实现任务日志分别写入各自指定的日志文件,如AddTask日志写入add_task.log,SubTask日志写入sub_task.log,从而有效管理和区分不同任务的日志信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django框架中,使用celery可以实现异步任务的目的。对于web中费时的任务,可以加到celery中,防止阻塞界面,提高用户体验。

然而,使用celery的过程中,如果存在多种类型的任务时,所有任务的日志记录是个头疼的问题,如果直接使用python的logging模块,会出现日志文件为空,日志没有写入指定日志文件的情况。

celery提供了自己封装好的logging模块,如果设置正确,其效果还是挺好的。


# core/tasks.py
from celery import Task
from celery.utils.log import get_task_logger

def register_task_logger(module_name):
    """Instantiate a logger at the decorated class instance level."""
    def wrapper(cls):
        cls.log = get_task_logger('%s.%s' % (module_name, cls.__name__))
        return cls
    return wrapper

@register_task_log(__name__)
class AddTask(Task):

    def run(self, x, y):
        self.log.info("Calling task add(%d, %d)" % (x, y))
        return x - y

@register_task_log(__name__)
class SubTask(Task):

    def run(self, x, y):
        self.log.info("Calling task subtract(%d, %d)" % (x, y))
        return x - y

在settings.py文件中对celery日志进行设置
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值