I have a class with methods decorating celery @task as follows:
class Port(object): """docstring for Port""" def __init__(self,): print 'Class has been initialized ...' @celery.task(filter=task_method,name="Port.process") def process(self,): print "I'm inside the process task method: "
Called here:
p = Port() p.process.apply_async()
I also tried: p.process.delay() , with the same result below.
When I run it, I get this error:
[2013-06-22 02:32:53,988: ERROR/MainProcess] Task Port.process[77cff07e-4bc5-4e36-9c4e-b68d7616c74e] raised exception: TypeError('process() takes at least 1 argument (0 given)',) Traceback (most recent call last): File "/usr/local/lib/python2.7/site-packages/celery/task/trace.py", line 228, in trace_task R = retval = fun(*args, **kwargs) File "/usr/local/lib/python2.7/site-packages/celery/task/trace.py", line 415, in __protected_call__ return self.run(*args, **kwargs) TypeError: process() takes at least 1 argument (0 given)
This is the important part, TypeError: process() takes at least 1 argument (0 given) .
Now, how can I solve this problem?
Some say this happens because celery uses a method task not related to the initialized object, and some say that it just works, did I miss something here?
source share