雅虎财务查询速度

我目前正在研究一个项目,涉及查询许多不同的股票代码的雅虎金融。 瓶颈在于从雅虎那里获取数据,所以我想知道是否有办法加快这一速度。

如果我使用多台机器来查询,然后汇总数据,会有帮助吗? 我只有一台物理机器, 我该怎么做呢?

谢谢!

编辑:目前,我正在使用Node.js,雅虎财务和Q.deferred要求雅虎的历史数据。 然后,一旦所有的承诺都兑现(对于每个股票),我正在做一个Q.all()来坚持数据。

var data = []; tickers = ["goog", "aapl", ...]; ... Q.all(_.map(tickers, function(symbol) { return getYahooPromise(symbol); })) .done( function() { persistData(data) }); 

getYahooPromise检索股票代码的数据并将其推入数据数组中。 一旦所有的承诺都解决了,数据就会保存在MySQL数据库中。

第二次编辑:更多代码:

 var sequentialCalls = []; for ( var i = 0; i < tickers.length / chunkSize; i++ ) { sequentialCalls.push( persistYahooChunk ); } sequentialCalls.push( function(callback) { connection.end(); callback(); }); async.series( sequentialCalls ) exports.persistYahooChunk = function(callback) { console.log("Starting yahoo query"); var currentTickers = tickers.slice(currentTickerIndex,currentTickerIndex + chunkSize); return yahooFinance.historical( { symbols: currentTickers, from: "2015-01-28", to: "2015-02-05" }).then( function(result) { console.log("Query " + currentTickerIndex + "/" + tickers.length + "completed"); currentTickerIndex += chunkSize; //add valid data var toPersist = _.map(result, function(quotes, symbol) { return [symbol, quotes.length != 0 ]; }); var query = "INSERT INTO `ticker` (`symbol`, `valid`) VALUES ?"; connection.query(query, [toPersist], function(err, result) { if (err) { console.log (err); } //console.log(result); callback(); }); }); 

}

瓶颈是因为您正在为每个代码执行一个查询。

根据你需要的数据,如果你可以做一个单一的查询,包括所有的代价,它会更快。

以下是一个例子,如果您需要通过一个查询获取所有当前价格的代号列表:

http://finance.yahoo.com/webservice/v1/symbols/A,B,C,D,E/quote?format=json

Interesting Posts