2017-02-23 89 views
0

我正在通过节点脚本运行一些文件管理任务。包含node-windows软件包以允许我将此脚本作为Windows服务运行。今天早上我遇到了一个严重的错误,当时我意识到服务已经开始了同一个脚本的重复实例。这非常糟糕,它损坏了24小时的数据,因为两个脚本都试图处理相同的数据集并最终粉碎它们。我从来没有见过Windows服务允许这样的事情。有没有其他人有这个问题或有任何想法是什么造成它?节点Windows服务启动多个实例

+0

如果没有用户的某种明确操作,node-windows将不会启动进程的** new **实例。如果它失败了,它将重新启动一个现有的进程,因此确保你的进程正确地失败(即正确的退出代码)是很重要的,否则它可能会使进程处于不稳定的状态。 – Corey

回答

0

查看我的关于node-windows实例的评论。

真正的问题是数据损坏,与node-windows没有任何关系。节点脚本应该具有容错性。更具体地说,它应该实现文件锁定,这是防止这种确切情况的标准做法。

有几个文件锁定模块可用。 lockfile是npm使用的。还有另一个名为proper-lockfile的项目,它以稍微不同(更友善的方式)解决了问题。