2012-10-24 13 views
5

ノード+エクスプレスアプリで大量のデータをapp.get( "/ importdata"、コールバック)経由でインポートしようとしています。タイムアウト時に、要求が完了していない場合は、要求を再度再生し、サーバーは同じデータの再インポートを開始します。Nodejs + expressjsがサーバタイムアウト後にリクエストを再生する

接続タイムアウト後に要求が再生されている正確な理由がわかりません。

私は自分のtimeOut期間をいくつかの巨大な数値に設定すると問題の部分は解決されますが、なぜリクエストが再び再生されるのかを正確に理解できませんか?

ありがとうございます。私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); 
    }); }); 

ワンピース

impstore ---------------> ユーザーID タイムスタンプ水曜日10月24日2012年16時35分28秒GMT + 0530(IST) の掲載が得た100 ユーザーID IMS 1件の タイムスタンプ再帰 の掲載は IMS 1つの タイムスタンプREC 200 ユーザーIDを持ってursive の掲載は IMS 1件の タイムスタンプ再帰 の掲載は400 ユーザーID IMSを得た300 ユーザーIDを持って1件の タイムスタンプ再帰 の掲載だ500 ユーザーID IMS 1件の タイムスタンプ再帰 の掲載だ600 ユーザーID IMS 1 タイムスタンプ再帰 リスティング ユーザーID ims 1 タイムスタンプ再帰 リスナーを持っているリスト ユーザーID 件のIMS 1件の タイムスタンプ再帰 の掲載は900 ユーザーID IMS 1 タイムスタンプ再帰 impstore ---------------> ユーザーIDを持って タイムスタンプ水曜日2012年10月24日16:37 :28 GMT + 0530(IST) の掲載は1000件の ユーザーID IMS 1件の タイムスタンプ再帰 の掲載情報について100の ユーザーID IMS 1

を持ってしまった:私は100 のチャンク内のデータは、私は900件のデータを受信取得していますリスティングとその後のサーバー私たちがコンソールで見ることができるように、最後の2つのセットをチェックします.1番目のアイテムは、次に100を表示します。すなわち、リストは100になり、2番目のアイテムは100となり、プロセスが完了すると、 2つの同様のオブジェクトがあります。

うまくいけば、私はうまく説明しました。

+2

コードを表示する必要があります(最小限のテストケースが望ましい)。 – ebohlman

+0

いくつかのコード(最小限のテストケースが望ましい)を表示する必要があります。 – ebohlman

+0

あなたはそれを再送信しているクライアント側ではないと確信していますか? – JohnnyHK

答えて

0

私は同じ問題を抱えています。ここでは、HTTPプロトコル仕様に従って、httpクライアントがタイムアウト後にリクエストを再送信できることを説明する、スタックオーバーフローでの別の答えを見ました。 expressの場合、デフォルトのサーバータイムアウトは2分(https://nodejs.org/api/all.html#http_server_settimeout_msecs_callback)です。

これは、ブラウザからそのエンドポイントにアクセスしている場合に該当する可能性があります。

私はこの奇妙なことを理解しています。幽霊があなたに同じ要求を再送信しているように見えます。他の人があなたに何度も何度も尋ねて、クライアントがリクエストを再送していないかどうかを再度確認します。

私は、このゴースト現象のより良い説明で他の答えを見つけたら、この回答を更新します。

関連する問題