python – 子类化芹菜任务
作者:互联网
我正在编写很多非常相似的任务,并想知道如何更好地子类化Task以减少样板.因为一个任务只是一次实例化,所以你不能把事情放在__init__中,就像我在下面所示,但它应该说明这一点.
我想要完成的事情:
class EmailTaskOne(Task):
def run(self, object_id):
email_data = EmailData.objects.get(pk=object_id)
data = self.do_common_stuff(email_data)
self.do_unique_stuff(data)
class EmailTaskTwo(Task):
def run(self, object_id):
email_data = EmailData.objects.get(pk=object_id)
data = self.do_common_stuff(email_data)
self.do_unique_stuff2(data)
# lots more tasks like this
我想拥有的是:
class BaseEmailTask(Task):
abstract = True
#...Insert Magic Here...
class EmailTaskOne(BaseEmailTask):
def run(self, object_id):
self.do_unique_stuff(self.data)
所以,既然__init__是正确的,我在哪里设置抽象类中的类.我可以很容易地定义一堆函数,如果我想做的就是分解一些东西,但是一些(很多)样板取决于object_id.
解决方法:
我和MauroRocco的答案对你有帮助吗?
见celery task and customize decorator
在那里,我成功地将参数传递给扩展的Task
标签:python,django,celery,django-celery 来源: https://codeday.me/bug/20190517/1123634.html