Запустить задание Cron через node js - PullRequest
0 голосов
/ 13 июля 2020

Я использую Expressjs в /routes/index.js у меня есть:

app.group('/test', test => {
    const testHandler = new testHandler();
    test.get('/test-action', testHandler.testAction.bind(testHandler));
  });

в /test/handler.js у меня

export class testHandler {

  constructor() {
  }

  /**
   * @param req
   * @param res
   * @param next
   * @returns {*}
   */
  async testAction(req, res, next) {
    // todo code here
  }
}

I хотите создать задание cron для запуска этого маршрута (например, localhost: 3000 / test / test-action) два раза в час. С PHP я могу сделать это с помощью * */2 * * * php /path_to_webroot/index.php param1 param2 Есть ли аналогичный способ сделать это с Nodejs?

1 Ответ

1 голос
/ 13 июля 2020

Вы можете использовать node-cron. Он использует аналогичный синтаксис, который вы используете в php.

# min hour mday month wday command
*/15  *    *    *     *    some-command

, чтобы запланировать запуск some-command каждые 15 минут, node-cron будет использовать аналогичный синтаксис для указания времени запуска:

'0 */15 * * * *'

Ну, вам нужно нормально определить свои express маршруты. Затем внутри вашей функции cron вы должны сделать запрос на этот express маршрут, который вы определили.

request('http://localhost:3000/test/test-action', function(error, response, body) {
        if (!error && response.statusCode == 200) {
            console.log('im ok')
            // console.log(body) 
        }
    })

Вы можете использовать `request внутри своей кукурузной работы. Таким образом, ваш API будет вызываться каждый указанный c раз.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...