防止使用管道节点请求的立交桥API上的504网关超时

防止使用管道节点请求的立交桥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

+0

那么有没有办法让querys,这需要超过了几分钟? – Schneyer

+0

嗯,是的,这就是为什么我在Github上创建这张票的原因。如果您的查询需要很长时间才能生成第一个结果,您将遇到超时。如果你的查询很早就开始产生一些数据,并且只是连续返回数据,你应该没问题。也许你的bbox太大或者你的查询太复杂了?不可能告诉你,因为你没有提供你的查询。 – mmd