在我的django项目中,我有一个模型Task
:
class Task(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
expiration_date = models.DateTimeField(default=max_expiration_date)
####################################
def max_expiration_date():
now = timezone.now()
return now + timezone.timedelta(days=7)
确切的到期日,我需要调用notification
函数。请注意,我将有太多的Task
实例,因此我需要用于最佳系统消耗的最佳方法。什么是最佳方法? celery
能做到吗?谢谢。
答案 0 :(得分:2)
Celery函数apply_async
可以使用参数eta
来指定应在其后运行任务的日期时间。
注意:保证任务可以在指定的日期和时间之后的某个时间执行,但不一定在该确切时间执行。
通过此操作,您只需在初始任务创建过程中将expiration_date
作为eta
参数传递给apply_async
上的notification
,就可以了。
文档:http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown