NodeJS Scheduler для повторного вызова на определенный маршрут - PullRequest
0 голосов
/ 26 апреля 2018

Я ищу планировщик Nodejs для планирования маршрута (например, router.get("/schedule", function(req, res){console.log("Hello");})), чтобы маршрут / schedule автоматически вызывался через определенный промежуток времени. Я искал около node-schedule и node-cron , но, насколько я понимаю, только по расписанию вызывается определенная функция, поэтому она не удовлетворяет моему требованию

Спасибо за любую помощь !!

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Требуете ли вы сделать фактический HTTP-вызов или вы просто хотите обработчик функции, связанный с маршрутом через определенный интервал?

В первом случае я использую запланированную лямбду AWS для вызова своего маршрута. Таким образом, вызов направляется в любой экземпляр, доступный для обработки (при условии, что среда с балансировкой нагрузки).

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/

0 голосов
/ 26 апреля 2018

Что ж, вы всегда могли бы, чтобы маршрут вызывал функцию, и чтобы узел-хрон или узел-расписание вызывали его также, но если вам действительно нужен запланированный http-вызов, то вы можете сделать это с помощью онлайн-службы, такой как cronjob https://cron -job.org , и это бесплатно.

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