【发布时间】:2011-07-21 23:51:48
【问题描述】:
我正在使用 NodeJs 制作地理编码 web 应用程序。地理编码的东西运作良好,除了我有 40% 来自谷歌的错误 620,所以我丢失了很多地址给 geocod。
错误 620:因为 http.get(....) 对 Google 网络服务的获取请求太快了。
我尝试使用 setTimeout(requestGeocod(place, client, details), 1000),但 NodeJS 正常触发 requestGeocod。
我可以改变什么来获得 100% 的请求。
/*GOOGLE MAPS GEOCODING API QUERY*/
function requestGeocod(place, client, details){
var options = {
host: 'maps.google.com',
port: 80,
path: '/maps/geo?'+ query.stringify({"q":place}) +'&output=json&oe=utf8/&sensor=false&key='+api
};
console.log("Requête : " + options.path)
http.get(options, function(res) {
console.log("Got response: " + res.statusCode);
res.setEncoding('utf8');
res.on('data', function(chunk){
client.emit('result', {"chunk":chunk, "details":details})
})
res.on('end', function(){
console.log("Fin du GET");
})
}).on('error', function(e) {
console.log("Got error: " + e.message);
client.emit("error");
})
}
【问题讨论】:
-
您的请求率是多少?
setTimeout(requestGeocod(place, client, details), 1000)不会改变速率,它只会增加客户端的延迟 -
客户端的比率非常高。我在客户端使用 setTimeout 每隔 1 秒调用一次 requestGeocod(place, client, details)
标签: javascript node.js web-services google-maps-api-3 get