在快速服务器中生成子进程
Spawning child processes in an express server
在我的快速服务器中,有一些函数我需要作为子进程运行,否则它们会占用服务器,其他人将无法访问它。他们已经在使用异步模块,但除非它们作为子进程运行,否则它们仍然占用服务器。
一个问题是将 req 和 res 参数传递给它们。
如何做到这一点?
使用 child_process.fork,您可以将消息发送到子进程。
编辑:我错误地建议将req
和res
作为消息参数传递给子进程。这是不可能的,因为进出子进程的所有消息都转换为 JSON。相反,您可以在服务器中保留某种队列。下面仅作为示例,您可能需要更强大的内容:
儿童.js:
process.on('message', function(message) {
// Process data
process.send({id: message.id, data: 'some result'});
});
服务器.js:
var child_process = require('child_process');
var child = child_process.fork(__dirname + '/child.js');
var taskId = 0;
var tasks = {};
function addTask(data, callback) {
var id = taskId++;
child.send({id: id, data: data});
tasks[id] = callback;
};
child.on('message', function(message) {
// Look up the callback bound to this id and invoke it with the result
tasks[message.id](message.data);
});
app.post('/foo', function(req, res) {
addTask('some data', function(result) {
res.send(result);
});
});
它涉及更多,但它应该有效。您可能会很快摆脱这样的系统,并且可以通过适当的队列更好地服务。
相关文章:
- 子进程未接收消息
- 如何通过子进程连接Java应用程序后在node.js中编写文件
- 节点.js子进程中的运行函数
- 如何将画布对象从子进程流式传输回 Node.js
- 如何在Firefox插件中向子进程发送消息,如Chrome原生消息
- 从生成的子进程中获取信息的最佳方法
- 在 Node.js 中使用 Jasmine 测试子进程发送
- 在快速服务器中生成子进程
- 如何在 node.js 中关闭子进程的 stdio 管道
- 如何使用并行子进程在大型数组上执行“工作”
- 使用 node.js (子进程) 运行 shell 脚本
- 如何从nodejs中的守护进程生成gpg子进程
- Cloud9 在生成子进程时抛出错误,是否有解决方法
- 如何在从 Meteor.method 返回之前等待子进程结果
- 将输入数据发送到节点.js中的子进程
- 完成时的子进程事件
- 如何在 Debian 上通过 node.js 中的引用变量停止子进程
- Node.js为什么不立即启动子进程
- 通过Node.js子进程关闭CS:GO专用服务器
- 是否可以像使用Node.js那样,生成用不同于Python或PHP服务器的语言编写的子进程?