防止使用管道节点请求的立交桥API上的504网关超时
问题描述:
我使用OpenStreetMap查询(立交桥API)的以下代码。它适用于较小的查询,但在较大的查询上工作正常,大约需要10分钟,它只生成504网关超时响应。防止使用管道节点请求的立交桥API上的504网关超时
代码:
var reqStr = "http://overpass.osm.rambler.ru/cgi/interpreter?data=...
console.time("query");
var stream = request(reqStr,{timeout: 3600000}).on('error', function(err) {
console.log(err)
}).pipe(fs.createWriteStream('resultExport.json'));
stream.on('finish', function() {
console.timeEnd("query");
});
响应(resultExport.json):
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>504 Gateway Time-out</title>
</head><body>
<h1>Gateway Time-out</h1>
<p>The gateway did not receive a timely response
from the upstream server or application.</p>
</body></html>
查询命令有一个[超时:3600](秒),得到了请求{timeout:3600000}(毫秒)。我还能做什么来防止超时并获得适当的响应?我有点困惑,这是从哪里来的。
答
这是一个已知问题,尚未在Overpass API服务器上解决/修复。
详情请参阅此Github的问题:https://github.com/drolbr/Overpass-API/issues/220
那么有没有办法让querys,这需要超过了几分钟? – Schneyer
嗯,是的,这就是为什么我在Github上创建这张票的原因。如果您的查询需要很长时间才能生成第一个结果,您将遇到超时。如果你的查询很早就开始产生一些数据,并且只是连续返回数据,你应该没问题。也许你的bbox太大或者你的查询太复杂了?不可能告诉你,因为你没有提供你的查询。 – mmd