响应 HTTP 请求时,您可能需要在后台处理负载同时以非阻塞响应进行响应。这可以通过关闭请求并启动 goroutine 来继续处理来实现。
在提供的代码示例中,您将状态代码设置为 202 Accepted 以指示该请求被接受以进行后台处理。要正确关闭请求,只需编写 header 并启动 goroutine,如下所示:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
一些开发人员建议在编写后从请求处理程序返回header 并启动 goroutine。然而,这不是必需的并且可以省略。从处理程序返回会自动发出请求完成的信号,并释放分配给它的资源。
如果您打算返回 200 OK 状态代码,您可以简单地调用 sleep功能无需设置状态码。如果没有设置 headers,服务器会自动设置 200 OK。
关闭后台处理请求的最佳实践是写入 header 并启动 goroutine,如以下代码所示:
<code class="go">func index(w http.ResponseWriter, r *http.Request) { w.WriteHeader(http.StatusAccepted) go sleep() }</code>
从处理程序返回后,请记住避免在并发 goroutine 中使用 http.ResponseWriter 或 httpRequest 值,因为它们可能会被服务器重用。
以上是如何在 Go 中正确关闭后台处理的 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!