2016-06-29 3 views
1

私はexpress.jsアプリケーションを作成しましたが、私のGETリクエストの1つが完了するまでに非常に時間がかかります(Hadoopクライアントでスパーククエリを実行します)。
リクエストに時間がかかるため、リクエストを実行したクライアント(Chrome、Firefox、jQuery)は同じリクエストをexpress.jsアプリケーションに何度も再送信します。
これらの定期的なリクエストを処理する方法はありますか?expressjsで長いHTTPリクエストを実行するには?

答えて

0

あなたはそれがaswell要求のタイムアウトを持っているdoesntのことを確認し、プロキシサーバーの任意の並べ替えを使用している場合も

var server = app.listen(port); 

server.on('connection', function(socket) { 
    socket.setTimeout(600 * 60 * 1000); 
}); 

を提出あなたのapp.jsでこれを追加してみてください。

+0

は、あなたの答えをありがとう!私はまだ定期的なリクエストを受け取ります。あなたが助けるかもしれないと思うことが他にありますか? –

+0

あなたのサービングプロキシとしてbrowsersyncを使用していますか?私はかつてデバッグに迷惑をかけていた彼とタイムアウトの問題を抱えていました。サーバー変数でタイムアウトを設定することもできます –

1

連続した要求が行われた理由は、実際に要求のタイムアウトが原因でした。
私はそれが要求オブジェクトで次のように使用して動作させるための管理:req.connection.setTimeout(60*10*1000);
だから、完全なコードは次のようになります。

app.get('/timetunnel/:accountId/:date', (req, res) => { 
    // this request takes a lot of time, so increase the timeout 
    req.connection.setTimeout(60 * 10 * 1000); 
    reallyLongOperation(); // preferably async to prevent server blocking 
}); 
関連する問題