используя методы класса как задачи сельдерея

Я пытаюсь использовать методы класса в качестве задач django-celery, размечая их с помощью декоратора @task. Та же ситуация описанаВотспросил Ананд Джейахар. Это как то так

class A:
    @task
    def foo(self, bar):
        ...

def main():
    a = A()
    ...
    # what i need
    a.foo.delay(bar) # executes as celery task 
    a.foo(bar) # executes locally

Проблема, даже если я использую экземпляр класса, как этоa.foo.delay(bar) это говорит о том, чтоfoo нужны как минимум два аргумента, что означает, чтоself указатель отсутствует.

Больше информации:

Я не могу преобразовать класс вмодуль из-за наследстваМетоды сильно зависят от членов класса, поэтому я не могу их сделатьстатическиймаркировкакласс поскольку задача с @task decorator делает класс самой задачей, и можно было бы выполнить методы изrun() метод, используя некоторый аргумент в качестве ключа для выбора метода, но это не совсем то, что я хочу.Создание экземпляра класса и передача его какself Аргумент к методам меняет способ выполнения методовне как сельдерей, но как обычно (т.е. во время тестирования)Я пытался выяснить, как можно динамически зарегистрировать задачу, например, из конструктора, но сельдерей делится кодом между рабочими, поэтому это кажется невозможным.

Спасибо за вашу помощь!

Ответы на вопрос(4)

Ваш ответ на вопрос