所以这里我对我的CRON调用nodeJS应用程序。目前无法保证我的脚本不会在给定时刻多次运行;我希望脚本在它已经运行时结束。
Semaphores是通常的做法。由于我对NodeJS还不熟悉,如果可能的话,我想研究和实现现有的模块。
所以我发现semaphore for node,似乎是节点最受欢迎的预制解决方案。然而,文档非常稀少,研究代码让我很头疼:
https://github.com/abrkn/semaphore.js/blob/master/lib/semaphore.js
我认为该模块会使用某种文件来了解该进程是否已在运行,但它使用global
来存储该信息。那个怎么样?这肯定会阻止两个子脚本在单个CRON调用中同时运行,但这不会阻止两个不同的CRON调用执行,是吗?
或者是否可能在所有正在运行的NodeJS任务之间共享global
?
修改
我必须确切地知道这个应用程序不是HTTP应用程序,它只是CRONed脚本的集合。所以也许信号量模块甚至不是正确的方向,因为它显然应该与createServer()
一起使用。