2017-06-15 28 views
3

我一直是NodeJS作爲服務器端,MongoDB作爲我們的數據庫。它真的很棒。當cron在後臺運行時,沒有Mongo Query獲取結果

現在我已將node-schedule庫添加到我們的系統中,以調用類似cron-job的函數。

該過程需要大約數小時才能完成。

我的問題是每當cron運行時,所有到我站點的用戶都得到沒有響應,即數據庫被鎖定。

從一個星期就陷入困境,需要很好的解決方案來運行cron,而不會影響用戶使用該站點。

+0

尋求調試幫助的問題(**「爲什麼不是這個代碼工作?」**)必須包括所需的行爲,一個*特定的問題或錯誤,以及在問題中重現它所需的最短代碼*本身**。沒有**明確問題陳述**的問題對其他讀者無益。請參閱:[如何創建最小,完整和可驗證示例。](http://stackoverflow.com/help/mcve) –

回答

0

通常情況下,您需要編寫一個worker並在不屬於您的服務器的其他入口點運行worker。有多種方法可以實現這一點。

1)寫一個工人另一臺服務器上使用您的數據庫

2交互)撰寫服務人員與您的API

3共同作用的另一臺服務器上)使用同一臺服務器,但在安裝一個cronjob到執行在指定時間完成工作的文件。

但是,您不應該從您的服務器正在運行的入口點進行此操作。你需要一個不同的執行文件。

有一件事你可以做到這一點,它不會讓你的服務器停滯不前,這將是你的觸發節點時間表運行子進程。​​