Лучший способ вызвать функцию в определенное время в Джанго - PullRequest
0 голосов
/ 08 июля 2019

в моем проекте 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 function.please обратите внимание, у меня будет слишком много Task экземпляр, поэтому мне нужен лучший метод для оптимального потребления системы. Каков наилучший способ сделать это? celery может это сделать? Спасибо.

1 Ответ

2 голосов
/ 08 июля 2019

Функция Celery apply_async может принимать аргумент eta, чтобы указать дату и время, после которого задача должна быть запущена.

Примечание: задача гарантированно будет выполнена через некоторое время послеуказанная дата и время, но не обязательно в это точное время.

При этом вы можете просто передать свой expiration_date в качестве параметра eta, вызывая apply_async на вашем notification в пределахпервоначальное создание задачи.

Документация: http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...