Как я могу создать пользовательские задания cron, прошедшие через средство выбора даты? - PullRequest
0 голосов
/ 06 марта 2020

У меня есть следующая функция в веб-приложении:

enter image description here

На изображении выше я сохраняю время, указанное на модели Schedule для некоторой работы, которая будет выполнена. На данный момент это работает идеально для «простых» выборов, а это означает, что если пользователь выбирает только Hourly, Weekly, Daily, or Monthly, то у меня есть парк заданий cron, который запускается Hourly, Weekly, Daily, or Monthly. Так что для ясности, у меня уже есть 4 задания cron, которые уже размещены в моем crontab, которые будут запускаться в указанное время и выбирать соответствующие модели расписаний.

Проблема, с которой я сталкиваюсь, - это пользовательская функция. Я озадачен тем, как эффективно создать фоновую задачу для запуска на пользовательском вводе для пользователя. Вот пример сценария. Допустим, у меня есть 3 пользователя, каждый из которых выбирает свое время для выполнения определенной работы.

Пользователь 1 выбирает пользовательскую задачу, которая будет выполняться только в январе, феврале и марте. Пользователь 2 выбирает пользовательскую задачу, которая будет выполняться по понедельникам в 13, 6 и 9 часов вечера. Пользователь 3 выбирает сканирование, которое будет выполняться только с пятницы по субботу каждый месяц.

И настройка продолжается и продолжается .......

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

1 Ответ

0 голосов
/ 06 марта 2020

Я бы, вероятно, go с механизмом, который ставит задачу в очередь для следующего вхождения при сохранении конфигурации. Затем, после его выполнения, рассчитайте следующее вхождение и так далее. Не забудьте сначала удалить запланированный запуск при внесении изменений в конфигурацию. Это может быть сложно с некоторыми адаптерами ActiveJob, поэтому, если вы еще не приняли решение относительно определенного c, я бы рекомендовал que . Но вы можете сделать это в Sidekiq .

Чтобы упростить расчет следующего вхождения, вы можете использовать, например, камень ice_cube .

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