在快速服务器中产生subprocess
在我的快递服务器中有一些function,我需要作为subprocess运行,否则他们将绑定服务器,其他人将无法访问它。 他们已经在使用asynchronous模块,但他们仍然绑定服务器,除非他们作为subprocess运行。
一个问题是将req和resparameter passing给它们。
如何才能做到这一点?
使用child_process.fork ,你可以发送消息给subprocess。
编辑:我不正确地build议将req
和res
作为消息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); }); });
这是多一点参与,但它应该工作。 你可能会很快从这样一个系统中发展出来,并且可以通过一个适当的队列来更好地服务。
- 杀死一个bash脚本不会终止subprocess
- 在Node.js中访问当前正在执行的“请求”或“线程”,就好像它是全局的一样?
- 有没有比child_process中的方法启动进程的另一种方法?
- 写入node.js中的process.stdin并parsing行的最佳方法是?
- 在node.js中,如何声明一个可由主进程初始化并由工作进程访问的共享variables?
- 为什么我不能在windows上的nodejs中终止我的subprocess?
- node.jssubprocess更改一个目录并运行进程
- NodeJS集群:如何减less主人的数据?
- 在使用process.exit() – 节点js时,Winston日志文件并不总是保存