Что необходимо учитывать при разработке Cron Jobs (запланированные задачи) - PullRequest
0 голосов
/ 03 октября 2018

Я работаю над веб-сайтом, в котором есть раздел, который показывает информацию об акциях компании и данные, связанные с инвесторами.Эти данные извлекаются с помощью запланированных вызовов SOAP API.

Я создал две запланированные задачи для достижения этой цели:

  1. feth-data (каждые 10 минут): извлекает данные и сохраняет их в cron_last_trade_price_graph График, представляющий «цену последней сделки» относительно времени в течение дня
  2. конечный день (в конце каждого дня): очищает устаревшие (последние два дня) записи данных cron_last_trade_price_graph и извлекает данные для его восстановления в cron_historical_data. Эти данные будут использоваться для заполнения таблицы и графика исторических данных, которые показывают «цену закрытия» для акций за все время

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

В общем, мой вопрос: каковы соображения (что нужно и чего нельзя) при работе с приложением, которое зависит от запланированных задач?

Например:

  1. Если сервер не может выполнитьзапланированное задание (скажем, end-day). Каков наилучший подход для повторной попытки выполнить эту задачу?
    Возможное решение : создание строки заполнителя на следующий день, данные которогодолжен быть извлечен и сохранен, имеет столбец is_historical_data_row_successfully_added со значением по умолчанию 'NO', а затем создает другое запланированное задание (fix-historical-data), чтобы проверить, была ли эта строка-заполнитель успешно заполнена, и заполнить ее, если нет.
    Озабоченность : Что делать, если fix-historical-data также не удалось?Тогда было бы лучше запланировать fix-historical-data, например, 3 раза в течение дня?Я чувствую, что это довольно грязное решение.
  2. Должно ли приложение загружаться для каждой запланированной задачи? : приложение использует Wordpress в качестве своей CMS.Должен ли я загружать Wordpress для fetch-data, в то время как ему едва ли нужна функциональность Wordpress?Должен ли я загружать Wordpress, когда задача сильно зависит от него, а не загружать Wordpress, когда задача не зависит?Какова лучшая практика здесь?
  3. Структура кода : Должны ли запланированные задачи иметь независимый каталог?Или его файл и зависимости должны смешиваться с другими файлами приложения?

Это проблемы, о которых я могу думать в данный момент.Есть ли еще какие-то соображения, о которых мне нужно знать?

...