2016-08-13 3 views
0

レスポンスヘッダーを生成し、ボディレスのままクライアントに返すことは可能ですか?レスポンスヘッダーをRailsでレスポンス本文の前に送信するには

send_headers 
do stuff 
render body 
+0

なぜですか?これは一般的にHTTPには一般的ではありません。 –

+0

私は長いクエリを持っており、クラウドフロントは30秒でタイムアウトしています。サーバーが応答しない場合、Cloudfrontはタイムアウトします。 –

+1

次に、長いクエリを修正したり回避したりすることに焦点を当てるべきです。これは私に[xy問題](http://meta.stackexchange.com/a/66378/284887)のように聞こえます.... – spickermann

答えて

0

いいえ、クライアントにヘッダーで応答して操作を実行し、本文で応答することはできません。 (私はこれがあなたが求めているものではありません)

クライアントに応答してから何らかの操作を実行する場合は、Sidekiqのようなバックグラウンドプロセッサを使用して、ユーザーに応答してロジックを実行できますあなたは再び身体で反応することはできません。

0

直接質問に答えるために、あなたはヘッダーだけを返しますHEAD requestを送信していない限り、あなたが全体応答が戻ってくるのを待って立ち往生しているので、ヘッダは、応答の一部です。

長いタイムアウトの問題に答えるために、接続のポーリングと応答コード202 Acceptedを含む長い要求を処理するための共通パターンがあります。

202 Accepted応答をすぐにに送信し、処理チェーンを動作させるエンドポイントソリューションを設計する必要があります。これにより、リクエストの所要時間と結果の場所を推定するリソースを作成し、レスポンスの本文に送信することができます。

最終的な目標は、要求が長時間かかる理由を理解することですが、必要なI/OまたはCPU時間やビジネス要件のために、最終的に長くて厄介な応答になるように設計されている場合202 Acceptedを使用し、接続ポーリングの形式を設定することが最善の選択肢になります。

関連する問題