2012-10-24 23 views
5

Sto cercando di importare un'enorme quantità di dati in un nodo + app express tramite app.get ("/ importdata", callback). Al timeout e se la richiesta non è completa, ripete nuovamente la richiesta e il mio server inizia di nuovo a importare gli stessi dati.Nodejs + expressjs riproduce la richiesta dopo il timeout del server

Non riesco a trovare il motivo esatto per cui la richiesta viene riprodotta dopo il timeout della connessione?

Una parte del problema viene risolta se si imposta il mio periodo timeout su un numero enorme ma non capisco esattamente perché la richiesta viene riprodotta di nuovo?

Grazie mille in anticipo.

pezzo dal mio 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); 
    }); }); 

pezzo dalla mia console

impstore ---------------> userid time stamp Mer 24 Ott 2012 16:35:28 GMT + 0530 (IST) annunci ottenuto 100 userid IMS 1 time stamp ricorsive annunci ottenuto 200 userid IMS 1 time stamp rec ursive Annunci ottenuto 300 userid IMS 1 time stamp ricorsive annunci ottenuto 400 userid IMS 1 time stamp ricorsive annunci ottenuto 500 userid IMS 1 time stamp ricorsive annunci ottenuto 600 userid IMS 1 tempo di bollo ricorsive annunci ottenuto 700 userid IMS 1 time stamp ricorsive annunci ottenuto 800 userid 0.123.516,41 milaIMS 1 time stamp ricorsive annunci ottenuto 900 userid IMS 1 time stamp ricorsivo impstore ---------------> userid time stamp Mer 24 Ottobre 2012 16:37 : 28 GMT + 0530 (IST) annunci ottenuto 1000 userid IMS 1 time stamp ricorsive annunci ottenuto 100 userid IMS 1

Per informazioni: io sono sempre i dati in blocchi di 100 ricevo dati 900 elenchi e quindi il server timeout ma come possiamo vedere sulla console viene fatta nuovamente la richiesta di controllo degli ultimi 2 set, la prima mostra i successivi 100 ovvero gli elenchi ora aumentano a 1000 e la seconda dice che gli elenchi sono 100 e quando l'intero processo è completo, i avere 2 oggetti simili

Spero di aver spiegato bene.

+2

È necessario mostrare un codice (preferibilmente un caso di test minimo). – ebohlman

+0

È necessario mostrare del codice (preferibilmente un caso di test minimo). – ebohlman

+0

Sei sicuro che non sia il lato client che lo sta rinviando? – JohnnyHK

risposta

0

Ho lo stesso problema. Ho visto un'altra risposta qui in overflow dello stack che spiega che, in base alle specifiche del protocollo HTTP, un client http può inviare di nuovo una richiesta dopo un timeout. Per espresso, il timeout del server predefinito è 2 minuti (https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback).

Questo è probabilmente il tuo caso se accedi a quell'endpoint da un browser.

E capisco la stranezza di questo, sembra che un fantasma sta inviando nuovamente le stesse richieste a voi. Altre persone ti chiedono ancora e ancora di ricontrollare se non è il client a inviare nuovamente le richieste.

Aggiornerò questa risposta se trovo l'altra risposta con una spiegazione migliore di questo comportamento fantasma.

Problemi correlati