django -celery-beat и DatabaseScheduler с установленным временем первого запуска - PullRequest
0 голосов
/ 23 февраля 2020

Я хочу использовать django -celery-beat и DatabaseScheduler для создания функции "оповещения по электронной почте" для пользователей. Они должны быть в состоянии сказать, когда они хотят получать эти оповещения (например, каждый день - 7 часов утра или каждую неделю понедельника - 1 час дня).

Я почти понял, как создавать периодические c задачи. т.е.

>>> PeriodicTask.objects.create(
...     interval=schedule,                  # we created this above.
...     name='Importing contacts',          # simply describes this periodic task.
...     task='proj.tasks.import_contacts',  # name of task.
...     expires=datetime.utcnow() + timedelta(seconds=30)
... )

из https://github.com/celery/django-celery-beat, но как мне узнать, когда должна быть первая отправка?

1 Ответ

1 голос
/ 23 февраля 2020

Есть поле start_time в PeriodicTask модели. Вы можете установить значение даты и времени для него. Задание будет отправлено первым после этого времени.

>>> PeriodicTask.objects.create(
        # skipped
        start_time=datetime.utcnow() + timedelta(seconds=300)
        # task will be first sent after 5 minutes
)
...