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 任务