在快速服务器中产生subprocess

在我的快递服务器中有一些function,我需要作为subprocess运行,否则他们将绑定服务器,其他人将无法访问它。 他们已经在使用asynchronous模块,但他们仍然绑定服务器,除非他们作为subprocess运行。

一个问题是将req和resparameter passing给它们。

如何才能做到这一点?

使用child_process.fork ,你可以发送消息给subprocess。

编辑:我不正确地build议将reqres作为消息parameter passing给subprocess。 这是不可能的,因为所有发往和来自subprocess的消息都被转换成JSON。 相反,你可以在你的服务器上保留一些types的队列。 下面只是作为一个例子,你可能想要更强大的东西:

child.js:

 process.on('message', function(message) { // Process data process.send({id: message.id, data: 'some result'}); }); 

server.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); }); }); 

这是多一点参与,但它应该工作。 你可能会很快从这样一个系统中发展出来,并且可以通过一个适当的队列来更好地服务。