是否可以生成响应标头并将其发送回没有正文的客户端?
send_headers
do stuff
render body
答案 0 :(得分:0)
不,您无法使用标头响应客户端,执行操作,然后使用正文进行响应。 (我不是肯定的,这就是你所要求的)
如果您想响应客户端然后执行某些操作,您可以使用后台处理器(如Sidekiq)在响应用户后执行逻辑,但您无法再次使用身体。
答案 1 :(得分:0)
要直接回答问题,标题是回复的部分,因此,除非您发送只会返回标题的HEAD request,否则您将等待等待整个响应回来。
要回答长时间超时的问题,有一种常用模式用于处理涉及连接轮询和202 Accepted响应代码的长请求。
您应该设计一个端点解决方案,直接发送202 Accepted response 并设置处理链。通过这种方式,您可以创建一个资源,该资源可以对请求将花费多长时间以及结果的位置进行有用的估计,并将其发送到响应正文中。
你的最终目标应该是弄清楚为什么请求需要这么长时间,但是如果它最终被设计成一个漫长而艰巨的响应,要么是由于需要I / O或CPU时间,要么是因为它是业务需求,然后使用202 Accepted并设置连接轮询形式将是您的最佳选择。