我想添加一些管理實用程序到一個小的Web應用程序,如「備份數據庫」。用戶將點擊一個按鈕,HTTP響應將立即返回,儘管可能長時間運行的進程已在後臺啓動。node.js中的「產生線程」式行爲
在Java中,這可能會通過使用Actor在Scala中產生一個獨立的線程來實現。但是,node.js中的適當成語是什麼? (代碼段讚賞)
我現在正在重新閱讀文檔,這確實看起來是一個節點101的問題,但這幾乎是我在這上面...無論如何,澄清這是基本情況:
function onRequest(request, response) {
doSomething();
response.writeHead(202, headers);
response.end("doing something");
}
function doSomething(){
// long-running operation
}
我想讓響應立即返回,並使doSomething()在後臺運行。
好吧,給定節點的單線程模型,如果不產生另一個OS級別的ChildProcess,看起來不可能。我的誤解。
在我的代碼中,我需要的備份大多是基於I/O的,所以節點應該以很好的異步方式處理它。我想我會做的是將doSomething轉移到response.end之後,看看它是如何表現的。
我相信你瀏覽過文檔。 http://nodejs.org/docs/v0.4.7/api/index.html我認爲這取決於你的過程的性質,但看看兒童進程。 – supertopi 2012-04-06 11:36:57
謝謝。看起來我的問題根源在於對node如何工作的深刻誤解:) Child Process是我的想法,雖然不是最簡單的解決方案,請參閱下面的Joe的回覆。 – danja 2015-08-14 18:05:17