为了理解节点工人,我寻求一个正确的方向。我目前有Node代码,它从文件中读取数据,并对网络请求执行一系列后续操作。我对数据所做的所有操作目前都发生在read函数的回调中。
我绞尽脑汁的是如何最好地接受这个单一的读取函数(这几乎肯定不会减慢我的应用程序的速度--我很确定这是我想要分支的后面的请求),并将操作划分为多个子进程。当然,我不想在同一行数据上多次执行我的操作,而是希望给每个工作人员一个饼块。我最好的选择是,在read-回调中,用部分数据创建几个数组,然后在回调之外,将一个数组提供给每个工作人员吗?还有其他选择吗?我的最终目标是减少脚本运行x数据量所需的时间。
var request = require('request');
var request = request.defaults({
jar: true
})
var yacsv = require('ya-csv');
// Post Log-In Form Information to Appropriate URL -- Occurs only once per script-run -- Log in cookies saved for subsequent requests
request.post({
url: 'xxxxx.com',
body: "login_info",
// On Reponse...
}, function(error, res, body) {
// Instantiate CSV Reader
var reader = yacsv.createCsvFileReader("somefile.csv");
// Read Data from CSV, Row by Row -- Function happens once per CSV-row
// THIS IS WHAT I -THINK- I CAN SPLIT AMONG MULTIPLE WORKERS
var readData = reader.addListener('data', function(data) {
// Bind each field from a CSV row to a corresponding variable for ease of use
//[Variables here]
// Second Request for Search Form -- Uses information from a single row to query more information from a database
request.post({
url: 'xxxxx.com/form',
body: variable_with_csv_data,
}, function(error, res, body) {
// Parse the resulting page, then page elements to variables for ease of output
}
});
});
});发布于 2014-08-13 15:53:46
集群模块不是线程的扩展器。集群模块允许您通过多个将 http请求平衡到相同的应用程序逻辑,而无需指定责任。
你到底想要优化什么?
整个过程需要很长时间吗?
数据事件的单独处理会减慢吗?
你的数据库调用慢了吗?
http请求慢了吗?
此外,我还会取消ya-csv模块--在我看来,它似乎有点过时了。
https://stackoverflow.com/questions/25289842
复制相似问题