芹菜计划任务每个任务实例的到期时间?
Celery scheduled tasks with expiration time for each task instance?
我有一个带有 celery 4.1.0 的 django 应用程序和带有数据库调度程序的 celery beat。我想要的是 运行 来自管理站点的定期任务并为每个任务设置到期时间。 PeriodicTask 中的 expire
属性 是一个时间调度程序,它停止为该任务创建新消息,但我希望过期以撤销已安排但早于某个值的任务,例如一小时。怎么做?
我对芹菜文档及其不同版本之间的差异感到非常困惑。
听起来您需要使用自定义 scheduler class。
我通过 运行 一个计划任务解决了它,该任务运行具有所需到期时间的定义任务:
@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
我有一个带有 celery 4.1.0 的 django 应用程序和带有数据库调度程序的 celery beat。我想要的是 运行 来自管理站点的定期任务并为每个任务设置到期时间。 PeriodicTask 中的 expire
属性 是一个时间调度程序,它停止为该任务创建新消息,但我希望过期以撤销已安排但早于某个值的任务,例如一小时。怎么做?
我对芹菜文档及其不同版本之间的差异感到非常困惑。
听起来您需要使用自定义 scheduler class。
我通过 运行 一个计划任务解决了它,该任务运行具有所需到期时间的定义任务:
@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