Django система уведомлений в реальном времени - PullRequest
0 голосов
/ 28 мая 2020

Я пытаюсь создать систему уведомлений, которая в основном уведомляет пользователя или суперпользователя о завершении c определенного действия или наступлении даты.

Допустим, у меня есть модель, которая имеет поле даты и времени. Я хочу, чтобы моя система отправляла мне электронное письмо, когда это datetime находится на расстоянии 5 дней и 1 минуты от меня и, очевидно, применимо ко всем объектам этой модели. Или скажем, я хочу отправить это уведомление по электронной почте в момент указанной даты. Кроме того, мне нужен этот динамический c, чтобы я мог изменить или удалить условия этих уведомлений и, возможно, иметь несколько условий уведомления для одной и той же модели.

Теперь я подумал о планировании задач (я действительно не пока знаю, как это сделать), но я подумал, что это действительно замедлит работу системы, скажем, на сотнях объектов модели, может быть, даже на тысячах.

Моя причина приехать сюда и побеспокоить это удивительное сообщество еще одним вопросом: я хочу знать следующее:

  • Существует ли приложение Django, которое это уже есть, но я не смог найти после нескольких часов поиска?

  • Если нет, то единственный вариант - планирование задач? Если да, можно ли получить ссылку для справки? Хотя я предполагаю, что было бы плохо иметь слишком много запланированных задач (опять же, я понятия не имею, и могу ошибаться). Если это так, что вы, удивительные люди, предлагаете?

Спасибо за то, что уделили время, прочитав это. Я очень ценю это сообщество.

Ответы [ 2 ]

1 голос
/ 28 мая 2020
• 1000 python файл.
0 голосов
/ 28 мая 2020

Вам нужно будет запланировать задачу. Вы можете использовать django crontab для создания запланированных задач (заданий cron). Настроить очень просто. Вы можете запускать задание cron каждую минуту, чтобы проверять базу данных на предмет поля datetime, которое вам нужно, и предпринимать нужные действия. Если вы правильно запрашиваете свою базу данных, это не должно быть дорогостоящим, но я не рекомендую запускать задание cron каждую минуту, если это действительно не требуется, если у вас нет выделенного сервера и вам не нужно платить за время выполнения, как в бессерверной среде.

СВОДКА

  1. Для stati c cronjobs вы можете django-cron-tab.
  2. Для Dynami c cronjobs вы можете django-celery-beat.

Django celery beat позволяет сохранить расписание задач periodi c в базе данных . Задачами periodi c можно управлять из интерфейса администратора Django, где вы можете создавать, редактировать и удалять задачи periodi c, а также частоту их выполнения.

...