0

我有一个注册为 celery 任务的 python 函数,例如:

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

我想在任务执行之前检查argsand仍然有效。kwargs为此,我尝试覆盖类executerun功能,Task但它们没有按照那里的代码和文档中的说明执行。(至少这是我所理解的!)

execute run

的示例使用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.

我应该覆盖什么类或函数?这不可能吗?

预先感谢!

4

1 回答 1

1

我刚刚发现,如果您覆盖__call__功能,它可以正常工作。

代码变为:

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

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

于 2013-03-28T17:20:16.700 回答