栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

celery任务和自定义装饰器

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

celery任务和自定义装饰器

不太确定为什么传递参数无效?

如果使用此示例:

@task()def add(x, y):    return x + y

让我们向MyCoolTask​​添加一些日志记录:

from celery import taskfrom celery.registry import tasksimport loggingimport celerylogger = logging.getLogger(__name__)class MyCoolTask(celery.Task):    def __call__(self, *args, **kwargs):        """In celery task this function call the run method, here you can        set some environment variable before the run of the task"""        logger.info("Starting to run")        return self.run(*args, **kwargs)    def after_return(self, status, retval, task_id, args, kwargs, einfo):        #exit point of the task whatever is the state        logger.info("Ending run")        pass

并创建一个扩展类(扩展MyCoolTask​​,但现在带有参数):

class AddTask(MyCoolTask):    def run(self,x,y):        if x and y: result=add(x,y) logger.info('result = %d' % result) return result        else: logger.error('No x or y in arguments')tasks.register(AddTask)

并确保将kwargs作为json数据传递:

{"x":8,"y":9}

我得到结果:

[2019-03-05 17:30:25,853: INFO/MainProcess] Starting to run[2019-03-05 17:30:25,855: INFO/MainProcess] result = 17[2019-03-05 17:30:26,739: INFO/MainProcess] Ending run[2019-03-05 17:30:26,741: INFO/MainProcess] Task iamscheduler.tasks.AddTask[6a62641d-16a6-44b6-a1cf-7d4bdc8ea9e0] succeeded in 0.888684988022s: 17


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/378762.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号