Как вы можете запрограммировать cronjob для запуска только ОДИН РАЗ после 12:00 и 12:00? - PullRequest
0 голосов
/ 23 мая 2018

Мне задают следующую проблему:

  1. Есть две смены.Одна смена начинается в 12:00, а другая в 12:00.
  2. В начале каждой смены генерируйте некоторые задачи (детали не важны).

Обычно это тривиальная проблема, которую можно решить с помощью crontab.Однако моя компания работает на Heroku, а Heroku Scheduler обладает следующими интересными свойствами:

  1. Он может работать только каждые 10 минут, час или ежедневно ,
  2. Вы не можете определить время, когда планировщик действительно запустится.Если ваш планировщик работает каждые 10 минут, все, что вы можете ожидать, это то, что он будет работать с 4:00 до 4:10.
  3. Возможно, планировщик столкнулся с некоторой ошибкой и сбоем.Когда это произойдет, планировщик немедленно перезагрузится.Например, если планировщик вышел из строя в 4:00 во время его работы, он может снова запуститься в 4: 01.

Возможно ли реализовать cronjob, который:

  1. выполняется только один раз после 12:00 и 12:00
  2. без необходимости в базе данных для отслеживания времени ее выполнения?

1 Ответ

0 голосов
/ 23 мая 2018

Один из способов, которым я могу думать об этом, - это иметь некоторый сервер cron (не на Heroku), который запускает скрипт в 12:00 и 12:00.Сценарий, вызванный cron, может использовать API платформы Heroku для ускорения однократного dyno в приложении Heroku (с использованием конечной точки Dyno Create ).

Этот метод удовлетворяет вашим требованиям выполнения только один раз в 12:00 и в 12:00, БЕЗ использования БД для отслеживания времени выполнения.

Недостаток этого метода в том, что он не является "чистым Heroku"."решение, и требует от вас поддерживать некоторый" внешний "сервер для запуска ваших заданий cron.

Если вам не нравятся идеи поддержки собственного сервера cron для этого, вы можете использовать какое-то облачное решение для планированиятвой сценарийНапример, я думаю, что вы можете сделать это бесплатно, используя AWS Lambda с запланированными событиями .В этом случае вы запланировали бы запуск своей лямбда-функции каждый день на 12 и 12 часов, а ваша лямбда-функция ускорила бы работу Heroku на один день.

Конечно, если вы захотите добавить какую-то формуDB для вашего приложения Heroku, вы можете легко создать «чистое решение Heroku».

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