Времето за изчакване на обратната връзка (без отговор от сървъра), когато се направи заявка за изразходване на време

Имам заявка, която обработва хиляди данни. Така че понякога завършването отнема повече от 5 минути.

Но за съжаление loopback връща изчакване (без отговор от сървъра), преди процесът да приключи.

В заявка nodejs. Можете да премахнете времето за изчакване на заявка за конкретна заявка чрез кода по-долу.

request.setTimeout(0)

Може ли някой да ми каже как мога да направя това за дистанционен метод за обратна връзка?


person Ankur Akvaliya    schedule 08.12.2017    source източник


Отговори (2)


Тогава изглеждаше доста лесно.

Всичко, което трябваше да направя, е да предам http req object в моя отдалечен метод и след това да задам изчакване на 0.

 Visit.remoteMethod(
        'caculateDistance',
        {
            description: 'Calculate distance from beacon using rssi',
            accepts: [
                { arg: "req", type: "object", http: { source: "req" } },
                { arg: 'activationId', type: 'string', required: true }
            returns: { arg: 'data', type: 'Object', root: true },
            http: { verb: 'patch', path: '/:activationId/calculate-distance' },
        }
    );


Visit.caculateDistance = function (httpReq, activationId, callbackFn) {
        httpReq.setTimeout(0);
        /////calculations....
});

Благодаря все пак!

person Ankur Akvaliya    schedule 11.12.2017

Не съм съвсем сигурен в това, но можете да опитате, тъй като смятам, че това може да проработи

Можете да създадете прехващач за този конкретен маршрут или за всички маршрути във файла server.js.

app.all('/api/*', function(req, res, next){
    request.setTimeout(0); // this is the statement and pass it to the next middle ware func.
    next();
});

Ако не, можете също да използвате отдалечен метод за този маршрут и да добавите същия там.

Актуализация

Ако го искате за един api, просто използвайте

app.all('<exact api path>', function(req, res, next){
    request.setTimeout(0); // this is the statement and pass it to the next middle ware func.
    next();
});
person Rahul Singh    schedule 08.12.2017
comment
Благодаря за предложението, но ми трябва само за един api. Не трябва да засяга други. - person Ankur Akvaliya; 11.12.2017
comment
@AnkurAkvaliya тогава можете просто да отидете в отдалечения метод на същия от най-добрия в app.all('pass your api path'), това ще работи само за този api - person Rahul Singh; 11.12.2017