Celery为每个任务实例安排了具有到期时间的任务?

时间:2017-11-15 15:40:22

标签: python django celery django-celery celerybeat

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

@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