I'm trying to use the methods of class as the django-celery tasks, marking it up using @task decorator. The same situation is discribed here, asked by Anand Jeyahar.
It's something like this
def foo(self, bar):
a = A()
# what i need
a.foo.delay(bar) # executes as celery task
a.foo(bar) # executes locally
The problem is even if i use class instance like this
it says, that
needs at least two arguments, which meens that
- I can't convert class to module because of inheritance
- Methods are strongly depended on class members, so i can't make them static
- Marking class as the task with @task decorator makes the class a task itself, and it could be possible to execute the methods from
method, using some argument as a key for method selection, but it's not exactly what i want.
- Creating an instance of class and passing it as
argument to methods changes the way i execute the methods not as celery taks, but as usual methods (i.e. while testing)
- I've tried to find out how i can register the task dinamically, from constructor for example, but celery shares the code between the workers, so that's why it seems to be impossible.
Thanks for your help!