Articles of 并行处理

作为一个单独的node.js进程运行一个函数?

是否有可能作为一个完全独立的node.js过程来运行一个函数? 例如: var parallel = require("parallel"); parallel(function(){ var app = require("express")(); app.on("/",function(req,res){ res.send("hi"); }); app.listen(80); },function callback(err,stdout){ console.log("process terminated!") }); 是这样的可能吗?

并发请求到node.js,connect-mongo,会话被覆盖

在当前的一个项目(一种商店系统)中,我使用了expressJS和connect-mongo作为会话存储的node.js。 在客户端,我在启动时使用单个请求来创build一个新的会话,然后将多个并行请求发送到node.js服务器。 由于这些并行请求会改变会话,所以这些改变似乎会相互覆盖,当然这些改变会改变会话的不同对象。 示例(全部3个请求同时开始): 请求A将一些产品推送到数组req.session.productHist['abc'] 请求B将产品推送到req.session.productHist['def'] 请求C需要一些时间,但不会改变会话 由于请求C在请求A和B之后完成,但是在完成之前开始,所以似乎用请求C开始时所保持的值覆盖session.productHist (null)。 我怎样才能解决这个问题? 更新: 控制台输出的一些示例代码: var url = require('url'), express = require('express'), MongoStore = require('connect-mongo'); var aDay = 24*60*60*1000; var app = express.createServer(); app.configure(function(){ app.use(express.cookieParser()); app.use(express.session({ secret: "secret", store: new MongoStore({ db: 'lmsCache' }), maxAge: aDay }) ); app.use(express.methodOverride()); app.use(express.bodyParser()); app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); app.use(app.router); app.use(express.logger()); […]

在瀑布内节点asynchronous并行

我在Nodejs中构build一个服务器来从某个数据库检索数据。 我已经使用了asynchronous库了一段时间了,并想出了一些东西,例如把一个瀑布放在一个并行函数中。 我偶然发现了一个问题,我首先需要执行一个查询,然后在可以同时执行的其他查询中使用该查询的结果。 代码看起来像这样: async.waterfall([ function(callback) { connection.query( query, function(err, rows, fields) { if (!err) { callback(null,rows); } else { callback(null,"SORRY"); } } ); }, async.parallel([ function(resultFromWaterfall,callback) { connection.query(query, function(err, rows, fields) { if (!err) { callback(null,rows); } else { callback(null,"SORRY"); } } ); }, function(resultFromWaterfall,callback) { connection.query(query, function(err, rows, fields) { if (!err) { […]

Node.JS async.parallel不会等到所有任务完成

我正在使用aync.parallel并行运行两个函数。 这些函数请求RSS提要。 然后RSS提要被parsing并添加到我的网页。 但由于某种原因, async.parallel运行callback方法,而不必等到两个函数完成 该文件说: 一旦任务完成,结果作为一个数组传递给最终的callback。 我的代码。 require('async').parallel([ function(callback) { fetchRss(res, bbcOpts); // Needs time to request and parse callback(); }, function(callback) { // Very fast. callback(); } ], function done(err, results) { if (err) { throw err; } res.end("Done!"); }); 其实我只有“完成!” 在我的网页上。 为什么? 为什么我需要调用res.end() ? Node.JS文档说: response.end()方法必须在每个响应中调用。 如果我不打电话,我的网页将被“下载”(我的意思是在我的浏览器的地址栏中的进度条)。

nodejs并行callbackdevise模式

我试图find一个很好的模式来执行一堆并行任务。 让我来定义一些任务来举例说明。 任务a, b, c, d, e, f, g执行为a(function(er, ra){//task a returned, ra is result}) ,所以b到g 还有一些任务应该在某个任务完成后执行,我们称它们为ab, bc, abc, bd, bcd, af, fg ,表示当a和b返回ab(ra, rb)应该一次执行,当b和c返回时,应立即执行bc(rb, rc) ,如果a , b , c全部返回,则应执行abc(ra, rb, rc) 。 对于最简单的情况,如果只有a和b ,我可以这样做: (function(cb){ var count = 2, _ra, _rb; function update(){if(–count == 0) cb(null, _ra, _rb)} a(function(er, ra){_ra = ra; update()}); […]

是否有可能在Node.js中分叉一个JavaScript函数?

我尝试从我的主JavaScript文件执行长时间运行的函数。 我有2 cpu,所以我怎么才能分叉function?

CasperJS,并行浏览与testing框架

问题:我想知道是否有可能在一个脚本文件中使用testing框架进行并行浏览,所以使用tester模块和casperjstesting命令。 我见过一些人创build了两个casper实例: CasperJS同时请求和https://groups.google.com/forum/#!topic/casperjs/Scx4Cjqp7hE ,但正如文档中所述,我们不能创build新的casper实例在一个testing脚本。 所以我试着做一个类似的简单的例子 – 一个caspertesting脚本(只需复制并执行这个工作): var url1 = "http://casperjs.readthedocs.org/en/latest/testing.html" ,url2 = "http://casperjs.readthedocs.org/en/latest/testing.html" ; var casperActions = { process1: function () { casper.test.begin('\n********* First processus with our test suite : ***********\n', function suite(test) { "use strict"; casper.start() .thenOpen(url1,function(){ this.echo("1","INFO"); }); casper.wait(10000,function(){ casper.test.comment("If parallel, it won't be printed before comment of the second processus !"); […]

使用node.js运行许多并行http请求

我的任务是将一个进程分成许多并行运行的小进程,分发给一些从机。 请求通过HTTP进入服务器,服务器把它分成一些发送给从属机器的subprocess,等待所有的从请求返回响应,然后将聚合结果整理成一个数据对象,作为顶级请求。 我认为node.js会很有用,但是因为它是单线程的,所以我不能确定这是否可行,或者是否会阻止等待每个请求返回,然后再转到下一个请求。 这是可能的node.js? 如果是这样,有人能指出我的方向吗? 即节点模块使用或概述如何完成? 谢谢你的帮助。

什么是事件循环,与使用其他模型有什么不同?

我一直在研究Node.JS,所有的文档和博客都讨论它如何使用事件循环而不是按请求模式。 我有一些混淆理解差异。 我觉得我有80%的理解,但还没有完全得到它。

Async.js – 并行真的平行吗?

正如我迄今为止所理解的:Javascript是单线程的。 如果推迟某个过程的执行,则只需在该线程空闲时安排它(排队)以便运行。 但Async.js定义了两个方法: Async::parallel & Async::parallelLimit和我引用: 并行(任务,[callback]) 并行运行一组函数,而不必等到上一个函数完成。 如果任何函数将错误传递给它的callback函数 parallelLimit(任务,限制,[callback]) 与并行相同,只有在任何时候执行的最大“限制”任务才能并行执行任务。 就我对英语的理解而言,当你说:“并行执行任务”是指同时执行这些任务。 Async.js如何在单个线程中并行执行任务? 我错过了什么