在Django特定时间调用函数的最佳方法

时间:2019-07-08 04:58:54

标签: django time

在我的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能做到吗?谢谢。

1 个答案:

答案 0 :(得分:2)

Celery函数apply_async可以使用参数eta来指定应在其后运行任务的日期时间。

  

注意:保证任务可以在指定的日期和时间之后的某个时间执行,但不一定在该确切时间执行。

通过此操作,您只需在初始任务创建过程中将expiration_date作为eta参数传递给apply_async上的notification,就可以了。

文档:http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown