Celery(bind=True) 修饰实例方法和类方法时怎么传参, self问题.

不用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


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值