Tag: 进程

KUE可以执行外部stream程吗?

是否有可能在KUE https://github.com/LearnBoost/kue中将脚本作为作业进行排队和执行? 像/usr/bin/myScript.sh -a 10 -b 20 -c 30这样的脚本 我所见过的所有例子都假定这个工作被定义为Node.js函数。 如果可能,我如何定义作业名称,脚本path和脚本参数? 对于同一个任务,有没有比KUE更好的select。 最好用UI和小内存占用。 🙂

奇数exec节点中输出

我试图确定运行我的节点应用程序的计算机上是否安装了Java运行时环境。 这里是我开始build立的承诺,以确定它是否安装: FileSystemTools.prototype.checkToSeeIfJavaRuntimeEnvIsAvailable = function (){ return new Promise((resolve, reject) => { exec('java -version', (error, stdout, stderr) => { if(error) reject(error) if(stderr) reject(stderr) resolve(stdout) }) }) } 我正在构build运行此检查的生成器函数看起来像这样到目前为止: co(function *(){ let jreVersion = yield fst.checkToSeeIfJavaRuntimeEnvIsAvailable() console.log(jreVersion) }).catch(error => { throw new Error(error) }) 当我运行这个时,我根本得不到任何输出。 但是,如果我parsing了从exec命令返回的所有参数: FileSystemTools.prototype.checkToSeeIfJavaRuntimeEnvIsAvailable = function (){ return new Promise((resolve, reject) => { […]

在Node.js中访问当前正在执行的“请求”或“线程”,就好像它是全局的一样?

在Rails中,当前线程被用来存储全局variables(我知道,全局variables是邪恶的,但有时是必要的)。 Thread.current[:authlogic_scope] = scope 以下是一些使用它的地方: active_record / scoping.rb#L18 authlogic /会话/ activation.rb#L29 问题是,你可以在Node.js中做类似的事情吗? 具体来说,在一个快速应用程序 保持对当前请求(或当前线程)的引用的最佳方式是什么? 在expression式中,您正在使用请求/响应对象的callback来避免设置全局variables,这是有道理的: var express = require('express'); var app = express.createServer(); app.get('/', function(request, response) { response.send('Hello World'); }); 这个问题是关于build立一个用于caching数据库logging(限定在当前HTTP请求/当前用户)的“身份映射”。 在Rails中,他们可以通过保持身份映射的作用域为Thread.current ,并且因为所有事物都是同步的。 有没有办法在Node.js中做到这一点? 一种方法是将request传递给每个函数。 对于我个人而言,这样做太复杂了,我想尽可能避免这种情况。 另一种方法是重新定义您要在自定义JavaScript函数中使用的所有variables,类似于您查看模板的方式(使用模板定义感觉像全局variables的variables)。 但是对于我的特殊情况来说,这会比有帮助的更困惑。 第三种方法是将其设置为只能由当前HTTP请求或当前线程访问的某个全局variables。 这是可能的Node.js? 如果没有,还有什么其他方法可以完成同样的事情? 基本上,我希望能够做到 App.User.where({createdAt: {'>=': _(2).days().ago()}}).all() 并让它在内部检查一些node.js的process.CURRENT_REQUEST ,它的作用域是当前的请求, App.User查询可以存储它的结果(以及任何其他模型可以存储它们的结果,所以如果它们被再次请求,它不会命中数据库)。 我也希望能够以与Authlogic相同的方式传递当前用户,所以无论何时创build一个logging,createdById字段将被自动(内部)设置为process.CURRENT_REQUEST.currentUser 。

获取已经运行的进程的subprocessID

我正在调用一个外部程序(通过节点中的pty.js),当它运行时产生一个subprocess。 当父进程结束时,它会让孩子离开一段时间(孤儿)。 我可以得到父进程的id,但是想要得到产生的subprocess的id,所以当父进程退出的时候我可以把它杀掉。 我不相信在节点上有什么办法可以达到这个目的,那么C中有什么可以让你知道一个孩子的ID,只知道父母的ID。 到目前为止,我发现的一切都是从fork()获取子id,但fork是在外部程序中发生的。 另外,我想我可以打电话给ps或pstree /类似的东西,parsing输出,但感觉就像一个黑客。 编辑 这不是很好,但我已经拿出这个到目前为止: #include <limits.h> #include <stdio.h> int main(int argc, char *argv[]) { int id = atoi(argv[1]); int i; for(i = 0; i < INT_MAX; i++) { if(i != id && getpgid(i) == id) { printf("Process %d, is a child of %d", i, id); break; } } }

nodejs中的asynchronous操作

我有一条路线 app.get('/posts', function (req, res) { res.json([ // data ]); // what would happen to the code below // Suppose it is processing a million records processMillionRecords(); }); function processMillionRecords () { // process million records } 一旦响应被发送,另一个函数被调用,这是相当昂贵的操作。 如果这种情况继续会发生什么? 有什么影响吗? 我知道这样做的理想方式是使用后台进程。 所以我用下面的代替它。 res.json([ // data ]); var child = require('child_process'); child.fork('worker.js'); // worker.js function processMillionRecords […]

Node.js – 产卵gzip过程

我想用Node.js来gzip一些数据… 具体来说,我有'BUF'的数据,我想写一个gzipforms的这个'stream'。 这是我的代码: c1.on('data',function(buf){ var gzip = spawn('gzip', ['-' + (compressionRate-0),'-c', '-']); gzip.stdin.write(buf); gzip.stdout.on('data',function(data){ console.log(data); stream.write(data,'binary'); }); }); 麻烦的是,这根本行不通! 我不确定产卵过程和pipe道数据的确切语法。 任何帮助不胜感激。 提前谢谢了, 编辑:这里是我从中得到的想法的原始工作代码。 该项目位于: https : //github.com/indutny/node.gzip 任何人都可以搞清楚如何在node.js产生这个产卵因为我完全卡住了! var spawn = require('child_process').spawn, Buffer = require('buffer').Buffer; module.exports = function (data) { var rate = 8, enc = 'utf8', isBuffer = Buffer.isBuffer(data), args = Array.prototype.slice.call(arguments, 1), callback; […]

如何在退出时执行asynchronous操作

我一直试图在我的进程终止之前执行asynchronous操作。 说'终止'我的意思是一切终止的可能性: ctrl+c 未捕获的exception 崩溃 代码结束 什么..] 据我所知, exit事件,但同步操作。 阅读Nodejs文档我发现beforeExit事件是为asynchronous操作但是: “beforeExit”事件不是针对导致显式终止的条件发出的,例如调用process.exit()或未捕获的exception。 除非意图安排额外的工作,否则“beforeExit”不应该被用作“退出”事件的替代scheme。 有什么build议么?

将Node.js的内存使用限制在每个进程less于300MB

我们在单独的进程中运行testing,我们的一些testing套件包含超过20个文件。 我们如何限制(而不是增加)一个Node.js进程使用的内存量小于300MB? 如果我们不限制内存,我们可以使用高达20x500MB,大约10GB,这是太多的内存。 我可以在网上find一些关于增加内存的文章,但我无法find任何限制每个进程内存的内容。 具体来说,我们使用核心的child_process模块​​来创buildsubprocess,我想我们需要一些标志或arg来传递给cp来指定一个内存上限。

为什么node server.listen不能返回到shell

节点文件可以描述从服务器到简单的脚本,甚至是只能打印到控制台的东西: //logger.js console.log('Hello World'); // in the terminal > node logger.js Hello World > http包(和其他)如何不提供命令提示给用户; 他们如何保持这个过程活着? //server require('http').createServer(function (req, res) { res.end('Hello World'); }).listen(3000); // in the terminal > node server.js // process stays in the foreground, no prompt back

在快速服务器中产生subprocess

在我的快递服务器中有一些function,我需要作为subprocess运行,否则他们将绑定服务器,其他人将无法访问它。 他们已经在使用asynchronous模块,但他们仍然绑定服务器,除非他们作为subprocess运行。 一个问题是将req和resparameter passing给它们。 如何才能做到这一点?