NodeJS Scheduler用于重复调用特定路由

时间:2018-04-26 17:35:28

标签: node.js taskscheduler

我正在搜索Nodejs调度程序以安排路由(例如:self.canvas = MyFigureCanvas(...) ),以便在一段时间后自动调用路径 / schedule 。我搜索了 node-schedule node-cron ,但据我所知,只是为了调用特定功能的调度时间,所以它不符合我的要求

感谢您的帮助!!

2 个答案:

答案 0 :(得分:0)

您是否要求进行实际的HTTP调用,或者您是否只想要以特定间隔与路由关联的函数处理程序?

对于前者,我使用预定的AWS lambda来调用我的路线。这样,呼叫被路由到任何可用于处理的实例(假设负载平衡环境)。

package.json

{
  "dependencies": {
    "superagent": "3.5.2"
  },
  "name": "webhook-caller",
  "private": true,
  "version": "0.0.0",
  "engines": {
    "node": "4.2.1"
  }
}

template.yml

AWSTemplateFormatVersion: '2010-09-09'
Transform: 'AWS::Serverless-2016-10-31'
Description: Calls a URL when triggered
Resources:
  webhookcaller:
    Type: 'AWS::Serverless::Function'
    Properties:
      Handler: index.handler
      Runtime: nodejs6.10
      CodeUri: .
      Description: Calls a URL when triggered
      MemorySize: 128
      Timeout: 60
      Role: !<tag:yaml.org,2002:js/undefined> ''

index.js

'use strict';

var request = require( 'superagent' );

exports.handler = ( event, context ) => {

  console.log( "Calling GET " + process.env.URL );

  request
    .post( process.env.URL )
    .end( function ( err, res ) {
      if ( err != null ) {
        console.error( "Error calling GET " + process.env.URL );
        console.error( err );
      } else {
        if ( res.status == 200 ) {
          console.log( "Return code: " + res.status );
        } else {
          console.error( "Return code: " + res.status );
        }
      }
    } );

};

否则,只需使用普通的javascript计时器:https://nodejs.org/en/docs/guides/timers-in-node/

答案 1 :(得分:-1)

好吧,你总是可以让路由调用一个函数,并且还有node-cron或node-schedule调用它,但如果你真正需要的是一个预定的http调用,那么你可以使用像这样的在线服务cronjob https://cron-job.org,它是免费的。