Индикатор недопустимого окончания группы (не группы) при декодировании данных gtfs-r

Я пытаюсь использовать приложение node.js для регулярного декодирования некоторых данных gtfs-realtime. В основном он работает нормально, но каждые несколько часов я сталкиваюсь с ошибкой, которая приводит к сбою моего приложения. Сообщение об ошибке в моем журнале говорит, что есть "Illegal group end indicator for Message .transit_realtime.FeedMessage 7 (not a group)"

Я нашел этот вопрос / ответ в StackOverflow, но его нет. Кажется, я решил мою проблему. Вот набросок кода, который я использую для декодирования фида gtfs-r:

//process the response
var processBuffers = function(response) {
    var data = [];
    response.on('data', function (chunk) {
        data.push(chunk);
    });

    response.on('end', function () {
        data = Buffer.concat(data);
        var decodedFeedMessage = transit.FeedMessage.decode(data);
        allData = decodedFeedMessage.entity;
        //continues processing with allData...
    });
}

Спасибо!


person garson    schedule 16.09.2019    source источник


Ответы (1)


Проблема сбоя NodeJs в основном возникает каждый раз, каждый день, когда возникает какая-либо фатальная ошибка. И поскольку вы получили данные от третьей стороны, вам очень нужно будет убедиться, что данные всегда верны, чтобы предотвратить ошибку.

Простое решение - использовать другую систему для развертывания приложения NodeJS. Я рекомендую 2 очень популярных сегодня инструмента: PM2 и Passenger. (PM2 очень прост в использовании). Этот инструмент поможет автоматически перезапустить ваше приложение NodeJS после его сбоя.

http://pm2.keymetrics.io/

https://www.phusionpassenger.com/library/walkthroughs/deploy/nodejs/ownserver/nginx/oss/install_passenger_main.html

person Vo Kim Nguyen    schedule 03.10.2019