2016-04-27 2 views
1

Существует событие, после которого приходит обратная связь на моем сервере. Я должен отправить сообщение ровно через час после события.Node.js: длительная задержка

Я могу использовать setTimeout(), но, похоже, это будет плохо.

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

Кто-нибудь знает о более хорошем варианте для осуществления такой длительной задержки?

+0

Лично для этого я использовал бы 'cron'. Делайте это галочкой каждые x минут и сохраняйте отметки времени для действий в вашей БД. – Flux

+0

Я не вижу проблем с setTimeout(). Пожалуйста, объясните, почему это было бы плохо? – teroi

+0

@teroi в случае, если сервер перезагружен, тогда команда не будет выполнена. – Lola

ответ

2

Если вам требуется 100% -ная надежность, используйте работу cron. Проблема с заданием cron заключается в том, что ваш код будет распространяться по всему месту, и он будет требовать настройки каждый раз, когда вы настроите новый сервер. Альтернативным подходом было бы использовать пакет npm, такой как cron.

Проблема с setTimeout() заключается в том, что если ваше приложение выйдет из строя, перезапуск функции будет утрачен. Однако каждый раз, когда ваше приложение запускается, оно может запросить БД и просмотреть все отсутствующие тайм-ауты и установить их соответствующим образом.

+0

Спасибо за ваш ответ, я склонен к cron, и вы развеяли мои сомнения – Lola

Смежные вопросы