2013-03-28 36 views
0

我有一个注册为芹菜任务就像一个Python函数:如何在芹菜工作人员执行任务之前访问args和kwargs?

import celery 
@celery.task(base=MyTask) 
def my_fn(*args,**kwargs):# dooing stuff 

我要检查argskwargs是应该执行任务之前仍然有效。 为此,我试图重写Taskexecuterun功能,但是作为有代码和本细则规定他们没有得到执行。(至少这是我的理解!)

execute run

a sample use of run,similer到我想要的

这是我如何定义我的MyTask类:

from celery import Task 
class MyTask(Task): 
    def run(self,*args,**kwargs): #does't get called. 
    def execute(self,request,*args,**kwargs): #does't get called. 

我应该把什么样的类或函数放在一起? 这不可能吗?

提前致谢!

回答

1

我刚才发现,如果你重写__call__函数它可以正常工作。

代码变为:

from celery import Task 
class MyTask(Task): 
    def __call__(self,*args,**kwargs): 
     #do stuff 
     return super(...)... 

如果有一个更好的解决方案,我想看看,虽然。

+0

你可以分享你调用任务函数的代码吗?这听起来好像你在本地调用它,而不是通过远程工作者。 –