2016-04-20 3 views
2

Ich verwende folgenden Code für eine OpenStreetMap-Abfrage (overpass-API). Es funktioniert gut bei kleineren Abfragen, aber bei einer größeren, die etwa 10 Minuten dauert, generiert es nur eine 504-Gateway-Timeout-Antwort.Prevent 504 Gateway Timeout bei Überführung api mit Piped Node Anfrage

Code:

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"); 
}); 

Antwort (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> 

Der Query-Befehl hat eine [timeout: 3600] (Sekunden) und die Anforderung kam {timeout: 3600000} (Millisekunden). Was kann ich noch tun, um die Zeitüberschreitung zu verhindern und eine angemessene Antwort zu erhalten? Ich bin ein bisschen verwirrt, woher das kommt.

Antwort

2

Das ist ein bekanntes Problem, das auf dem Overpass-API-Server noch nicht behoben wurde.

Sehen Sie diese Github Ausgabe für Details: https://github.com/drolbr/Overpass-API/issues/220

+0

es ist also keine Möglichkeit, querys, die länger dauern als ein paar Minuten zu machen? – Schneyer

+0

Nun ja, deshalb habe ich dieses Ticket auf Github erstellt. Wenn die Abfrage sehr lange dauert, um erste Ergebnisse zu erzielen, wird das Zeitlimit überschritten. Wenn Ihre Abfrage beginnt, einige Daten ziemlich früh zu produzieren und nur kontinuierlich Daten zurückzugeben, sollten Sie in Ordnung sein. Vielleicht ist deine Bbox zu groß oder deine Abfrage zu komplex? Unmöglich zu sagen, da Sie Ihre Anfrage nicht gestellt haben. – mmd

Verwandte Themen