duc
duc

Reputation: 25

Run Cron job in node js

I'm using Expressjs At /routes/index.js i have:

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

At /test/handler.js i have

export class testHandler {

  constructor() {
  }

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

I want to create a cronjob to run that route ( for example localhost:3000/test/test-action ) twice an hour. With PHP i can do it by * */2 * * * php /path_to_webroot/index.php param1 param2 Is there a similar way to do it with Nodejs?

Upvotes: 0

Views: 1898

Answers (1)

xMayank
xMayank

Reputation: 1995

You can use node-cron. It uses similar syntax as you are using in php.

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

to schedule some-command to run every 15 minutes, node-cron would use a similar syntax to specify the time to run:

'0 */15 * * * *'

Well, you need to define your express routes normally. Then inside your cron function you would make a request to that express route you have defined.

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

You can use `request inside your corn job. This way your API will get called every specific time.

Upvotes: 1

Related Questions