子类化芹菜任务



我正在编写很多非常相似的任务,并且想知道如何更好地对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的回答对你有帮助吗?

查看芹菜任务和自定义装饰器

在那里,我成功地将参数传递给扩展任务

相关内容

  • 没有找到相关文章

最新更新