Повестка дня JS: что произойдет, если мой сервер не работает в запланированное время работы? - PullRequest
0 голосов
/ 29 сентября 2018

Допустим, у меня запланировано задание с использованием @ повестка дня / повестка дня , как это

agenda.schedule('tomorrow at noon', 'printAnalyticsReport', {userCount: 100});

Интересно, что произойдет, если мой скрипт сервера / узла отключится?

  • Может ли повестка дня перезапустить предыдущее задание при следующем перезапуске сервера?
  • Если нет, то как я могу добиться того же?

1 Ответ

0 голосов
/ 29 сентября 2018

Да и нет .Повестка дня должна выбрать вашу работу, если она была закрыта gracefuly.

Это означает, что, если все пойдет хорошо, поле lockedAt реальных заданий не будет установлено (будет null), которое должно выставлять ваши устаревшие задания для получения.

Однако, если не было постепенного отключения, они будут пропущены, так как, что касается повестки дня, они все еще работают.

В подобных ситуациях, когда задания находятся в режиме limbo, инструмент UI для повестки дня чрезвычайно полезен.Он показывает вам все запущенные задания и дает очень хороший обзор того, что происходит, поэтому после перезапуска вы всегда можете просмотреть и устранить любые проблемы.

Другой подход - запустить скрипт, разблокирующий все заблокированные задания.при запуске сервера:

db.agendaJobs.update({}, {$set: {lockedAt: null}});

Или более точный способ достижения того же результата с помощью этого метода.

Или другой, несколько более чистый способ сделать этонайдено здесь .

Подробнее о Повестке дня

...