multithreading - "Spawn a thread"类似 node.js 中的行为

标签 multithreading node.js

我想将一些管理实用程序添加到一个小型 Web 应用程序中,例如“备份数据库”。用户将单击一个按钮,HTTP 响应将立即返回,尽管可能长时间运行的进程已在后台启动。

在 Java 中,这可能通过生成一个独立的线程来实现,在 Scala 中则使用 Actor。但是在 node.js 中什么是合适的习语? (感谢代码片段)

我现在正在重新阅读文档,这确实看起来是一个 Node 101 问题,但这几乎就是我在这个问题上的位置......无论如何,澄清这是基本场景:

function onRequest(request, response) {
    doSomething();
    response.writeHead(202, headers);
    response.end("doing something");
}

function doSomething(){
     // long-running operation
}

我希望响应立即返回,让 doSomething() 在后台运行。

好的,考虑到 Node 的单线程模型,如果不产生另一个操作系统级的 ChildProcess 似乎是不可能的。我的误会。

在我的代码中,我需要的备份主要是基于 I/O 的,因此 Node 应该以一种很好的异步方式处理它。我想我要做的是将 doSomething 转移到 response.end 之后,看看它的行为如何。

最佳答案

正如 supertopi 所说,您可以查看 Child process .但我认为如果这种情况连续发生很多,它会损害服务器的性能。那么我认为您应该将它们排队。我想你应该看看asynchronous message queues离线(分布式)处理您的工作。一些(仅举两个例子)消息队列的例子是 beanstalkd , gearman .

关于multithreading - "Spawn a thread"类似 node.js 中的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10042648/

相关文章:

iphone - Objective-C run loop停止和重启的方法?

node.js - 如何在 node-pg-migrate 迁移中插入记录?

javascript - 在 React 中映射从 Nodejs 接收的数组时出现问题

node.js - 以编程方式完成 Node 临时 npm 安装

node.js - BelongsToMany 关联并使用 NodeJS Sequelize 插入数据库

multithreading - 如何在单独的线程中运行 `Observable`?

multithreading - 请告诉我我的线程出了什么问题!

C pthread_barrier同步问题

java - 新线程不显示框架

javascript - React 应用程序已发布,但目录 (/assets/images/) 中的图像丢失