2012-10-24 6 views
5

Ich versuche, große Datenmengen in einem Knoten + Express-App über app.get ("/ importdata", Callback) zu importieren. Beim Timeout und wenn die Anfrage nicht abgeschlossen ist, wird die Anfrage erneut abgespielt und mein Server beginnt erneut, die gleichen Daten zu importieren.Nodejs + expressjs wiederholt Anfrage nach Server-Timeout

Ich kann den genauen Grund nicht finden, warum die Anforderung nach dem Verbindungstimeout erneut wiedergegeben wird?

Ein Teil des Problems ist gelöst, wenn ich meine timeOut-Periode auf eine große Anzahl einstellen, aber ich verstehe nicht genau, warum die Anfrage erneut gespielt wird?

Vielen Dank im Voraus.

Stück von meinem server.js

app.get('/impdata', function(req, res){ 
req.connection.setTimeout(600000); 
console.log("impstore--------------->"); 
    Q.when(getData(req.data), function(resp){ 
     res.json(resp); 
    }); }); 

Stück von meiner Konsole

impstore ---------------> userid Zeitstempel Mi 24. Oktober 2012 16.35.28 GMT + 0530 (IST) Anzeigen bekam 100 userid ims 1 Zeitstempel rekursive Anzeigen bekam 200 userid ims 1 Zeitstempel rec ursive Anzeigen erhielt 300 userid IMS 1 Zeitstempel rekursiven Listings erhielt 400 userid IMS 1 Zeitstempel rekursiven Listings erhielt 500 userid IMS 1 Zeitstempel rekursiven Anzeigen erhielt 600 userid IMS 1 Zeitstempel rekursiv Einträge haben 700 userid ims 1 Zeitstempel rekursiv Einträge erhalten 800 userid ims 1 Zeitstempel rekursive Anzeigen bekam 900 userid ims 1 Zeitstempel rekursive impstore ---------------> userid Zeitstempel Mi 24. Oktober 2012 16.37 Uhr : 28 GMT + 0530 (IST) Anzeigen bekam 1000 userid ims 1 Zeitstempel rekursive Anzeigen bekam 100 userid ims 1

Für weitere Informationen: ich bin Daten in Blöcken von 100 ich erhalte 900 Daten bekommen Listen und dann der Server mal aus, aber wie wir auf der Konsole sehen können, wird die Anfrage erneut gemacht, überprüfen Sie die letzten 2 Sätze, 1. zeigt die nächsten 100 dh Auflistungen jetzt auf 1000 erhöhen und die zweite sagt, dass Listen 100 sind und wenn der ganze Prozess abgeschlossen ist, ich habe 2 ähnliche Objekte.

Hoffentlich habe ich gut erklärt.

+2

Sie müssen einen Code anzeigen (vorzugsweise einen minimalen Testfall). – ebohlman

+0

Sie müssen einen Code anzeigen (vorzugsweise einen minimalen Testfall). – ebohlman

+0

Sind Sie sicher, dass es nicht die Clientseite ist, die es erneut sendet? – JohnnyHK

Antwort

0

Ich habe das gleiche Problem. Ich sah eine andere Antwort hier im Stapelüberlauf, die erklärt, dass gemäß der HTTP-Protokollspezifikation ein HTTP-Client eine Anfrage nach einer Zeitüberschreitung erneut senden kann. Für Express ist das Standard-Server-Timeout 2 Minuten (https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback).

Dies ist möglicherweise der Fall, wenn Sie über einen Browser auf diesen Endpunkt zugreifen.

Und ich verstehe die Seltsamkeit von diesem, es sieht aus wie ein Geist sendet die gleichen Anfragen an Sie zurück. Andere Leute bitten Sie immer wieder, zu überprüfen, ob der Kunde die Anfragen nicht erneut sendet.

Ich werde diese Antwort aktualisieren, wenn ich die andere Antwort mit einer besseren Erklärung dieses Geisterverhaltens finde.

Verwandte Themen