【问题标题】:Celery scheduled tasks with expiration time for each task instance?每个任务实例都有到期时间的芹菜计划任务?
【发布时间】:2018-04-28 22:05:29
【问题描述】:

我有一个带有 celery 4.1.0 的 django 应用程序和带有数据库调度程序的 celery beat。我想要的是从管理站点运行定期任务并为每个任务设置到期时间。 PeriodicTask 中的expire 属性是一个时间调度程序,它停止为该任务创建新消息,但我希望到期撤销已安排但比某个值旧的任务,例如一小时。如何做到这一点?

我真的对 celery 文档以及不同版本之间的差异感到困惑。

【问题讨论】:

    标签: python django celery django-celery celerybeat


    【解决方案1】:

    我通过运行一个计划任务来解决它,该任务运行具有所需到期时间的已定义任务:

    @shared_task(bind=True, queue='q1', max_retries=3)
    def parent_task(self, arg1):
        child_task.apply_async(kwargs={'arg1': arg1}, expires=86400)
    
    
    @shared_task(bind=True, queue='q1', max_retries=3)
    def child_task(self, arg1):
        pass
    

    【讨论】:

      【解决方案2】:

      听起来您需要使用自定义scheduler class

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-09-28
        • 1970-01-01
        • 2016-02-21
        • 1970-01-01
        • 2019-12-09
        • 2015-05-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多