我怎样才能在芹菜工人执行任务之前访问args和kwargs?

时间:2013-03-28 17:08:33

标签: python celery

我有一个python函数,注册为芹菜任务,如:

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

我想在任务执行之前检查argskwargs是否仍然有效。 为此,我尝试覆盖execute类的runTask函数,但它们没有按照代码和文档中的说明执行。(至少那是什么我明白了!)

execute run

a sample use of run,模拟我想要的东西

这是我定义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 个答案:

答案 0 :(得分:1)

我只是想通知如果你覆盖__call__功能它可以正常工作。

代码变为:

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

如果有更好的解决方案,我希望看到这一点。