我试图让celery任务包装在python对象方法周围。像:
class A:
@task
def test_task(self,args):
print "BLah..test"
def main():
a= A()
args = {}
a.test_task(args)
现在这失败了,错误test_task需要至少2个参数(给定1个)。 我的理解是自我对象没有通过。为什么会这样?我该如何解决这个问题?
更新: 这真的是我对芹菜缺乏了解。 @task装饰器只是添加/处理芹菜任务相关参数。它不会自动使每次调用该函数成为芹菜任务。该函数必须被调用为a.test_task.delay(args)..其中的问题是......
答案 0 :(得分:4)
从3.0版开始,Celery现在支持使用方法作为任务: http://docs.celeryproject.org/en/latest/reference/celery.contrib.methods.html
答案 1 :(得分:0)
您需要test_task
作为方法吗?简单功能会起作用吗?或者你可以使用静态方法吗?顺便说一下,你的main
函数不使用芹菜来执行test_task
,它以简单的方法运行它。