我想要做的是在我NodEO的进化算法之上添加一个REST服务器。我关注的是these steps,这基本上意味着
app.listen(port)
do_compute_intensive_task()
然后
function do_compute_intensive_task() {
do_lots_of_stuff();
if (not_finished) {
process.nextTick(do_compute_intensive_task());
} else {
console.log("We're done" );
}
}
已经签入(我知道,我不应该)here。计算密集型部分运行得很好,但REST服务器没有应答,它会停止连接,直到密集部分完成。我安装了最后一个节点v0.10.24,它不起作用。这是uname -a
Linux penny 3.8.0-35-generic #50-Ubuntu SMP Tue Dec 3 01:24:59 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
但它在另一台具有不同版本节点和较慢处理器的机器上工作:版本为v0.8.18,处理器为i5且uname -a
返回
Linux amy 3.8.0-35-generic #50~precise1-Ubuntu SMP Wed Dec 4 17:25:51 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
现在的问题是:我做错了什么?什么?什么东西?这是一个错误吗?它与处理器速度有关吗?
更新我已安装nave
(你也应该)检查不同的版本,它在0.9版本的某个地方停止工作。它适用于最新版本的0.8(0.8.26),它不再适用于最新的0.9或最新的0.11.10
答案 0 :(得分:1)
节点社区投票决定在岛外使用process.nextTick()
。为了您的阅读乐趣:
答案 1 :(得分:0)
事实上,已经回答in the nodejs issues queue (and quite fast)。 process.nextTick优先考虑计算密集型事件。如果您希望他们等待io,请使用setImmediate
。已修复this commit to nodeo