2012-10-24 12 views
5

Próbuję zaimportować ogromną ilość danych w aplikacji node + express przez app.get ("/ importdata", callback). Po przekroczeniu limitu czasu i jeśli żądanie nie jest kompletne, ponawia żądanie ponownie, a mój serwer ponownie importuje te same dane.Nodejs + expressjs powtórzy żądanie po upływie limitu czasu serwera

Nie mogę znaleźć dokładnego powodu, dla którego żądanie jest odtwarzane po upływie limitu czasu połączenia?

Część problemu została rozwiązana, jeśli ustawię mój okres timeOut na dużą liczbę, ale nie rozumiem dokładnie, dlaczego żądanie jest odtwarzane ponownie?

Dziękuję bardzo z góry.

kawałek z mojego 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); 
    }); }); 

kawałek z mojej konsoli

impstore ---------------> userid Time Stamp Śro Paź 24 2012 16:35:28 GMT + 0530 (IST) ofert dostał 100 userid IMS 1 time stamp rekurencyjne ofert dostał 200 userid IMS 1 czas znaczek rec ursive ofert dostał 300 userid IMS 1 Time Stamp rekurencyjne ofert dostał 400 userid IMS 1 Time Stamp rekurencyjne ofert dostał 500 userid IMS 1 Time Stamp rekurencyjne ofert dostał 600 userid IMS 1 sygnatura czasowa rekursywna Listing dostał 700 id użytkownika ims 1 znacznik czasu rekursywny Listings got 800 userid IMS 1 Time Stamp rekurencyjne ofert dostał 900 userid IMS 1 czas znaczek rekurencyjne impstore ---------------> userid datownik śro 24 października 2012 16:37 : 28 GMT + 0530 (IST) ofert dostał 1000 userid IMS 1 time stamp rekurencyjne ofert dostał 100 userid IMS 1

Dla informacji: jestem coraz danych w kawałki 100 otrzymam 900 dane aukcje, a następnie serwer Czasy się wyczerpały, ale jak widzimy na konsoli, żądanie jest ponownie sprawdzane, sprawdzaj ostatnie 2 zestawy, pierwsza pokazuje następną 100, a liczba aukcji zwiększa się teraz do 1000, a druga mówi, że aukcje są 100 i kiedy cały proces jest kompletny, mają 2 podobne obiekty.

Mam nadzieję, że wyjaśniłem dobrze.

+2

Musisz pokazać kod (najlepiej minimalny przypadek testowy). – ebohlman

+0

Musisz pokazać kod (najlepiej minimalny przypadek testowy). – ebohlman

+0

Czy jesteś pewien, że to nie strona klienta przesyła go ponownie? – JohnnyHK

Odpowiedz

0

Mam ten sam problem. Widziałem tu inną odpowiedź w przepełnieniu stosu, która wyjaśnia, że ​​zgodnie ze specyfikacją protokołu HTTP klient HTTP może ponownie wysłać żądanie po przekroczeniu limitu czasu. W przypadku opcji express domyślny limit czasu serwera to 2 minuty (https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback).

Jest to prawdopodobnie Twój przypadek, jeśli uzyskujesz dostęp do tego punktu końcowego z przeglądarki.

Rozumiem dziwność tego, wygląda na to, że duch ponownie wysyła te same prośby do ciebie. Inne osoby pytają Cię w kółko, aby dokładnie sprawdzić, czy to nie klient ponownie wysyła żądania.

Zaktualizuję tę odpowiedź, jeśli znajdę inną odpowiedź z lepszym wyjaśnieniem tego zachowania ducha.

Powiązane problemy