如何编写 nodejs 服务,一直运行

How to write nodejs service, running all time

本文关键字:一直 运行 服务 何编写 nodejs      更新时间:2023-09-26

我是nodeJs(和JS)的新手,所以你能解释一下(或给出一个链接)如何编写永久运行的nodeJs的简单服务吗?

我想编写服务,它每秒向外部 API 发送一个请求,以存储其数据库的结果。

那么,也许nodeJs有一些简单的模块来一遍又一遍地运行js方法(方法)?

或者,我只需要编写while循环并在那里进行?

setInterval()是你用来在node.js中每秒运行一些东西的东西。 这将每 NN 毫秒调用一次回调,其中传递 NN 的值。

var interval = setInterval(function() {
    // execute your request here
}, 1000);

如果您希望它永久运行,您还需要处理您联系的远程服务器离线或出现问题并且响应速度不如正常的情况(例如,麻烦的请求超时或失败可能需要一秒钟以上)。 在完成处理后 1 秒重复使用 setTimeout() 来计划下一个请求可能更安全。

function runRequest() {
    issueRequest(..., function(err, data) {
        // process request results here
        // schedule next request
        setTimeout(runRequest, 1000);
    })
}
// start the repeated requests
runRequest();

在这个代码块中,issueRequest()只是您正在执行的任何网络操作的占位符(我个人可能会使用 request() 模块并使用 request.get() .

由于您的请求处理是异步的,因此这实际上不会是递归,也不会导致堆栈堆积。


仅供参考,具有活动传入服务器或活动计时器或进程内网络操作的节点.js进程将不会退出(它将继续运行),因此只要您始终运行计时器或运行网络请求,您的节点.js进程将继续运行。