我想将一些管理实用程序添加到一个小的 Web 应用程序中,例如“备份数据库”。用户将单击一个按钮,HTTP 响应将立即返回,尽管可能长时间运行的进程已在后台启动。
在 Java 中,这可能通过生成一个独立线程来实现,在 Scala 中通过使用 Actor 来实现。但是在 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之后,看看它的行为如何。