python - 继承 celery 任务

标签 python django celery django-celery

我正在编写很多非常相似的任务,想知道如何更好地子类化 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。

最佳答案

我和 MauroRocco 的回答对您有帮助吗?

参见 celery task and customize decorator

我成功地将参数传递给扩展任务

关于python - 继承 celery 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13856886/

相关文章:

java - SWT 源代码编辑器小部件

python - 如何使用 Django/Python 从 RESTful Web 服务中使用 XML?

python - Django ModelForm 没有将数据保存到数据库,Form.save 不起作用?

python - 我可以将 Python 请求与 celery 一起使用吗?

python - Keras 报告 TypeError : unsupported operand type(s) for +: 'NoneType' and 'int'

python - 如何在 python 中编写嵌套并发代码?

python - 如何使用 asyncio 并行计算?

python - 如何使用字典更新对象的成员?

Django 异步请求

python - 如何在 Flask 中使用 Celery 为 session 添加值?