методы объекта сельдерея python

Я пытаюсь получить оболочку задач сельдерея вокруг метода объекта 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).. в этом проблема...


person Nandhini Anand Jeyahar    schedule 13.01.2012    source источник


Ответы (2)


Вам нужно иметь test_task как метод? Будет ли работать простая функция? Или вы могли бы использовать статический метод? Кстати, ваша функция main не использует сельдерей для выполнения test_task, она запускает его как простой метод.

person demalexx    schedule 13.01.2012

Начиная с версии 3.0, Celery теперь поддерживает использование методов в качестве задач: http://docs.celeryproject.org/en/latest/reference/celery.contrib.methods.html

person asksol    schedule 29.07.2012
comment
Не больше с 2014-10-10. Видимо слишком глючило. github.com/celery/celery/commit/ - person mikenerone; 16.12.2014