芹菜python对象方法

时间:2012-01-13 05:48:45

标签: python celery

我试图让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)..其中的问题是......

2 个答案:

答案 0 :(得分:4)

从3.0版开始,Celery现在支持使用方法作为任务: http://docs.celeryproject.org/en/latest/reference/celery.contrib.methods.html

答案 1 :(得分:0)

您需要test_task作为方法吗?简单功能会起作用吗?或者你可以使用静态方法吗?顺便说一下,你的main函数不使用芹菜来执行test_task,它以简单的方法运行它。