我有一个python函数,注册为芹菜任务,如:
import celery
@celery.task(base=MyTask)
def my_fn(*args,**kwargs):# dooing stuff
我想在任务执行之前检查args
和kwargs
是否仍然有效。
为此,我尝试覆盖execute
类的run
和Task
函数,但它们没有按照代码和文档中的说明执行。(至少那是什么我明白了!)
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.
我应该覆盖什么类别或功能? 这不可能吗?
提前感谢!
答案 0 :(得分:1)
我只是想通知如果你覆盖__call__
功能它可以正常工作。
代码变为:
from celery import Task
class MyTask(Task):
def __call__(self,*args,**kwargs):
#do stuff
return super(...)...
如果有更好的解决方案,我希望看到这一点。