Как запланировать фоновые задания в мультитенантном приложении - PullRequest
0 голосов
/ 12 июня 2019

У меня есть многопользовательское приложение Django, которое позволяет арендаторам планировать, когда приложение должно отправлять счета, отправлять напоминания, создавать отчеты и т. Д. Я использую Celery для фоновых заданий, но при необходимости могу переключиться на какой-то другой пакет.

Получил две проблемы. Какой способ настройки расписаний является наилучшим, а другой - позаботиться о часовых поясах.

Планирование

Должен ли я иметь таблицу базы данных, в которой хранятся сведения о заданиях (тип задания, время выполнения, параметры задания и т. Д.), А затем иметь фоновое задание, которое запрашивает эту таблицу, например, каждую минуту, и если оно находит задания, которые должны были запущены за последнюю минуту, после чего запускается соответствующее фоновое задание?

Я чувствую, что это неэффективно? Есть ли лучший способ сделать это?

В настоящее время есть несколько сотен арендаторов, но я рассчитываю получить около 15000 арендаторов, так что я думаю, что эта таблица может стать очень большой и замедлить время запроса?

Часовые пояса

Что касается часовых поясов, если арендатор зарегистрирован как находящийся в GMT 0, а другой - в GMT + 6, как позаботиться об этом при планировании заданий, чтобы клиенты не отправляли счета в полдень, когда им приходилось хотели, чтобы их отправили в полночь в зависимости от их часового пояса?

Я знаю, что Celery имеет настройку timezone, но тогда это часовой пояс для приложения, а не для каждого арендатора.

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