@albertalexandrov

Как организовать периодические задания в многопользовательском приложении?

Всем привет!)

Прошу подсказать, как реализовать возможность создавать задания в многопользовательском приложении.

В разных туториалах часто приводят примеры, где есть файл tasks.py, в котором прописаны задания. Например:

from celery.task.schedules import crontab
from celery.decorators import periodic_task

@periodic_task(run_every=(crontab(days='*/1')), name="wake_me_up", ignore_result=True)
def wake_me_up(alarm_melody):
    run_alarm_clock(alarm_melody)


Мне же нужно, чтобы пользователи могли сами создавать задания с необходимой им периодичностью. К примеру, чтобы пользователь А мог установить параметр days=1, пользователь B - days=2 и тд. То есть чтобы задания создавались на лету.

Пока на ум приходит следующее:

periodicity = 1
periodic_task(run_every=(crontab(days=f'*/{periodicity}')), name="wake_me_up", ignore_result=True)(wake_me_up)(alarm_melody)
  • Вопрос задан
  • 183 просмотра
Решения вопроса 1
@tumbler
бекенд-разработчик на python
Декораторы работают в момент импорта, расписание по пользователям лучше в БД хранить:

https://django-celery-beat.readthedocs.io/en/latest/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы