Повестка дня JS: что произойдет, если мой сервер не работает в запланированное время работы?

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

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

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

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

1 ответ

Решение

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

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

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

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

Другой подход заключается в запуске сценария разблокировки всех заблокированных заданий при запуске сервера:

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

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

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

Вот еще на повестке дня остановки

Другие вопросы по тегам