Предотвращение тайм-аута шлюза 504 на overpass api с запросом на конвейерный узел

Я использую следующий код для запроса OpenStreetMap (overpass-API). Он отлично работает с меньшими запросами, но с большим, который занимает около 10 минут, он генерирует только ответ на тайм-аут 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} (миллисекунды). Что еще я могу сделать, чтобы предотвратить тайм-аут и получить правильный ответ? Я немного не понимаю, откуда это взялось.


person Schneyer    schedule 20.04.2016    source источник


Ответы (1)


Это известная проблема, которая еще не решена / не исправлена ​​на сервере Overpass API.

Подробнее см. В этой проблеме Github: https://github.com/drolbr/Overpass-API/issues/220

person mmd    schedule 21.04.2016
comment
Значит, нет возможности делать запросы, которые занимают больше нескольких минут? - person Schneyer; 21.04.2016
comment
Ну да, именно поэтому я создал этот билет на Github. Если ваш запрос требует много времени для получения первых результатов, вы столкнетесь с тайм-аутом. Если ваш запрос начинает генерировать некоторые данные довольно рано и просто продолжает возвращать данные, все должно быть в порядке. Может быть, ваш bbox слишком велик или ваш запрос слишком сложен? Невозможно сказать, так как вы не предоставили свой запрос. - person mmd; 22.04.2016