簡體   English   中英

如何在Rails的響應主體之前發送響應頭

[英]How can I send response headers before response body in Rails

是否可以生成響應頭並將其發送到沒有主體的客戶端?

send_headers
do stuff
render body

不可以,您不能使用對客戶端的標頭進行響應,執行操作然后使用正文進行響應。 (我不是很肯定,這就是你要問的)

如果要響應客戶端然后執行一些操作,則可以使用諸如Sidekiq之類的后台處理器在響應用戶之后執行邏輯,但是您將無法再次以主體響應。

為了直接回答這個問題,標頭是響應的一部分 ,因此,除非您發送的是僅返回標頭的HEAD請求 ,否則您將不得不等待整個響應返回。

為了回答長超時問題,有一個用於處理長請求的通用模式,該模式涉及連接輪詢和202 Accepted響應代碼。

應該工程師發送一個202接受響應直線距離 ,並設置運動中的處理鏈的端點溶液。 這樣,您可以創建一個資源,該資源可以提供有關請求將花費多長時間以及結果將在何處的有用估計,並將其發送到響應的正文中。

您的最終目標應該是弄清楚為什么需要這么長的時間,但是如果最終設計為響應時間長且費力(由於I / O或CPU時間的原因),或者如果是業務需求,則使用202接受並設置一種形式的連接輪詢將是您的最佳選擇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM