celery中filter=task_method, bind=True修饰实例方法和类方法传参

Posted Jason_WangYing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了celery中filter=task_method, bind=True修饰实例方法和类方法传参相关的知识,希望对你有一定的参考价值。

不用filter=task_method时,实例(self)不会自动传入。
只有bind=True时, task对象会作为第一个参数自动传入。
加上filter=task_method参数,实例(self)会作为第一个参数自动传入。
加上filter=task_method, bind=True, task对象会作为第一个,实例(self)会作为第二个参数自动传入。
所以,最佳调用方式应为:

from celery.contrib.methods import task_method                                    
 
class A(object):                                                                  
    def __init__(self):                                                           
        object.__init__(self)                                                     
        self.a = 1                                                               
        self.b = 2                                                               
 
    @app.task(bind=True, filter=task_method)                                      
    def test1(task_self, self, a, b):                   
        print a                                                                   
        print b                                                                   
        return a+b+self.a+self.b

或:

from celery.contrib.methods import task_method                                    
 
class A(object):                                                                  
    def __init__(self):                                                           
        object.__init__(self)                                                     
        self.a = 1                                                               
        self.b = 2                                                               
 
    @app.task(filter=task_method)                                                 
    def test1(self, a, b):                                                                                                     
        print a                                                                   
        print b                                                                   
        return a+b+self.a+self.b

以上是关于celery中filter=task_method, bind=True修饰实例方法和类方法传参的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 1.11 中将 QuerySet 传递给 Celery 任务

celery:celery介绍架构基本使用,celery执行异步任务延迟任务定时任务,django中使用celery。

Celery学习--- Celery在项目中的使用

python之celery在flask中使用

Django 中使用 Celery

celery 设置多少时间后运行