2017-02-23 95 views
0

我正在通過節點腳本運行一些文件管理任務。包含node-windows軟件包以允許我將此腳本作爲Windows服務運行。今天早上我遇到了一個嚴重的錯誤,當時我意識到服務已經開始了同一個腳本的重複實例。這非常糟糕,它損壞了24小時的數據,因爲兩個腳本都試圖處理相同的數據集並最終粉碎它們。我從來沒有見過Windows服務允許這樣的事情。有沒有其他人有這個問題或有任何想法是什麼造成它?節點Windows服務啓動多個實例

+0

如果沒有用戶的某種明確操作,node-windows將不會啓動進程的** new **實例。如果它失敗了,它將重新啓動一個現有的進程,因此確保你的進程正確地失敗(即正確的退出代碼)是很重要的,否則它可能會使進程處於不穩定的狀態。 – Corey

回答

0

查看我的關於node-windows實例的評論。

真正的問題是數據損壞,與node-windows沒有任何關係。節點腳本應該具有容錯性。更具體地說,它應該實現文件鎖定,這是防止這種確切情況的標準做法。

有幾個文件鎖定模塊可用。 lockfile是npm使用的。還有另一個名爲proper-lockfile的項目,它以稍微不同(更友善的方式)解決了問題。