如何在Rails中的响应主体之前发送响应头

时间:2016-08-13 19:50:19

标签: ruby-on-rails ruby http

是否可以生成响应标头并将其发送回没有正文的客户端?

send_headers
do stuff
render body

2 个答案:

答案 0 :(得分:0)

不,您无法使用标头响应客户端,执行操作,然后使用正文进行响应。 (我不是肯定的,这就是你所要求的)

如果您想响应客户端然后执行某些操作,您可以使用后台处理器(如Sidekiq)在响应用户后执行逻辑,但您无法再次使用身体。

答案 1 :(得分:0)

要直接回答问题,标题是回复的部分,因此,除非您发送只会返回标题的HEAD request,否则您将等待等待整个响应回来。

要回答长时间超时的问题,有一种常用模式用于处理涉及连接轮询和202 Accepted响应代码的长请求。

您应该设计一个端点解决方案,直接发送202 Accepted response 并设置处理链。通过这种方式,您可以创建一个资源,该资源可以对请求将花费多长时间以及结果的位置进行有用的估计,并将其发送到响应正文中。

你的最终目标应该是弄清楚为什么请求需要这么长时间,但是如果它最终被设计成一个漫长而艰巨的响应,要么是由于需要I / O或CPU时间,要么是因为它是业务需求,然后使用202 Accepted并设置连接轮询形式将是您的最佳选择。