问题
我正在创建基于 NodeJS
的爬虫,该爬虫正在与 node-cron
软件包一起使用,并且我需要防止退出脚本退出,因为应用程序应永久作为cron运行,并将在某些时段执行带有日志的爬虫.
在Web应用程序中,服务器将侦听并阻止终止,但是在无服务器应用程序中,它将在所有代码执行完毕后退出程序,而不会等待 cron
.
我应该为此编写while(true)
循环吗? 为此,节点中的最佳做法是什么?
提前谢谢
解决方案
因为nodejs是单线程,所以while(true)
将不起作用.它只会抢夺整个 CPU
,其他任何东西都无法运行.
nodejs将在任何可能在未来运行的活动中继续运行.这包括打开的 TCP
套接字,侦听服务器,计时器等...
要更具体地回答,我们需要查看您的代码并查看它如何使用node-cron,但是您可以通过添加一个简单的 setInterval()
来保持 nodejs
进程的运行,例如:
setInterval(function() {
console.log("timer that keeps nodejs processing running");
}, 1000 * 60 * 60);
但是,node-cron
本身使用计时器,因此看来,如果您正确使用了node-cron
并正确计划了将来要运行的任务,则您的nodejs
进程不应停止.因此,我怀疑您
的真正问题是您没有正确地使用node-cron
为将来安排任务.仅当您向我们展示使用node-cron
的实际代码时,我们才能为您解决该问题.