NodeJS Scheduler用于重复调用特定路由[已关闭]

jckbn6z7  于 2023-08-04  发布在  Node.js
关注(0)|答案(2)|浏览(83)

**已关闭。**此问题是在寻求有关书籍、工具、软件库等内容的建议。它不符合Stack Overflow guidelines。它目前不接受回答。

我们不允许提问以寻求书籍、工具、软件库等方面的建议。您可以编辑问题,以便使用事实和引文回答。
5天前关闭。
Improve this question
我正在寻找一个Nodejs调度器来调度路由(例如:router.get("/schedule", function(req, res){console.log("Hello");})),这样路由**/调度会在一段时间后自动调用。我搜索了一下node-schedulenode-cron**,但据我理解,只是为了调度时间调用特定函数,所以不符合我的要求

zi8p0yeb

zi8p0yeb1#

您是否需要进行实际的HTTP调用,或者您只希望在特定的时间间隔内调用与路由关联的函数处理程序?
对于前者,我使用预定的AWS lambda来调用我的路由。这样,调用就被路由到任何可用于处理的示例(假设是负载平衡的环境)。
第一个月

{
  "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/

bxgwgixi

bxgwgixi2#

当然,你总是可以让route调用一个函数,也可以让node-cron或node-schedule调用它,但是如果你真正需要的是一个预定的http调用,那么你可以用cronjob https://cron-job.org这样的在线服务来做,而且它是免费的。

相关问题