#node.js #reactjs #cron #scheduled-tasks
Вопрос:
Я пытаюсь создать cron-задание, которое запускает функцию через 24 часа, но если это пятница, то таймер должен остановиться в 23:59 и перезапустить в воскресенье в 23:59. Как мне это сделать?
Представьте, что создается запрос. Когда это будет создано, должна быть вызвана функция электронной почты. Если ответ на указанное электронное письмо не получен в течение 24 часов, функция электронной почты должна быть вызвана снова, и таймер 24 часов должен запуститься снова, чтобы повторить этот процесс в третий раз. Но если сегодня суббота и таймер работает, он должен остановиться, а затем перезапустить его в понедельник. (Это означает, что в таймере не было израсходовано время с субботы или воскресенья).
Комментарии:
1. Самый простой способ? Сделайте так, чтобы ваша функция возвращалась немедленно, если день недели-суббота или воскресенье. J
2. Оформить заказ npmjs.com/package/node-cron вы можете обернуть функцию внутри обратного вызова, или даже если вы хотите, чтобы ваш крона функции в другой файл, вы можете скопировать его в качестве обратного вызова для хрон график, то, ловя ошибки процесса или даже вилкой процесса («выход») вы можете сигнала окончания процесса и хранить все, что угодно, как вам нужно, как успех.
3. Спасибо вам за помощь, коллеги-разработчики. @O. Jones это кажется простым, но функция также должна быть перезапущена в воскресенье в 23:59.
Ответ №1:
Некоторые шаблоны cron позволяют указывать диапазоны дней (например 59 23 * * 1-5
, работает только с понедельника по пятницу).
Перед более сложной логикой настройка cron для ежедневного запуска проверка дня недели в вашем приложении может быть проще, как прокомментировал О. Джонс.
Лично я бы склонялся к последнему, чтобы вы могли регистрировать, когда cron запускался и пропускался, потому что это были выходные, поэтому у вас есть запись, если что-то пойдет не так или вам нужно что-то отладить.
Комментарии:
1. Спасибо вам за вашу помощь. Это для того, чтобы запускать функцию каждый день в 23:59 с понедельника по пятницу, верно? Мне это нужно для конкретного случая. Представьте, что создается запрос. Когда это будет создано, должна быть вызвана функция электронной почты. Если ответ на указанное электронное письмо не получен в течение 24 часов, функция электронной почты должна быть вызвана снова, и таймер 24 часов должен запуститься снова, чтобы повторить этот процесс в третий раз. Но если сегодня суббота и таймер работает, он должен остановиться, а затем перезапустить его в понедельник. (Это означает, что в таймере не было израсходовано время с субботы или воскресенья).