我正在编写很多非常相似的任务,想知道如何更好地子类化 Task
以减少样板文件。由于 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。
最佳答案
关于python - 继承 celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856886/