2017-12-08 2 views
1

Ich habe eine Anfrage, die Tausende von Daten verarbeitet. Manchmal dauert es mehr als 5 Minuten.Loopback-Timeout (keine Antwort vom Server), wenn eine Anforderung zur Zeitaufnahme gemacht wird

Aber Loopback gibt leider Timeout zurück (keine Antwort vom Server), bevor der Prozess abgeschlossen ist.

In nodejs Anfrage. Sie können das Anforderungstimeout für bestimmte Anfragen durch den folgenden Code entfernen.

request.setTimeout(0) 

Kann mir jemand sagen, wie ich dieseRemote-Methode für Loopback tun kann?

Antwort

1

Es war ganz einfach, dann wie es aussah.

Alles, was ich tun musste, ist Pass http req object in meiner Remote-Methode und legen Sie dann Timeout auf 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.... 
}); 

Danke trotzdem!

1

Ich bin nicht ganz sicher, dieses aber man kann es versuchen, wie ich das Gefühl, funktionieren könnte

Sie einen Abfangjäger für diese Route erstellen oder alle Routen in der server.js Datei.

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

Wenn nicht, können Sie auch eine Remote-Methode für diese Route verwenden und die gleichen dort hinzuzufügen.

aktualisieren

Wenn Sie es für einen einzelnen api verwenden

nur wollen
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(); 
}); 
+0

Danke für den Vorschlag, aber ich brauche ti für nur eine API. Es sollte keine anderen beeinflussen. –

+1

@AnkurAkvaliya dann können Sie einfach in der Remote-Methode der gleichen der besten in der 'app.all ('übergeben Sie Ihre API-Pfad')' Dies wird nur für diese API funktionieren –

Verwandte Themen