首页  >  文章  >  后端开发  >  如何在 Go 中保持后台处理的同时正确关闭状态为 202 Accepted 的 HTTP 请求?

如何在 Go 中保持后台处理的同时正确关闭状态为 202 Accepted 的 HTTP 请求?

Barbara Streisand
Barbara Streisand原创
2024-10-28 09:45:29724浏览

 How to Properly Close HTTP Requests with 202 Accepted Status While Maintaining Background Processing in Go?

在继续后台处理时正确关闭请求

使用 202 Accepted 状态代码响应 HTTP 请求时,正确处理请求的关闭至关重要确保负载仍然可以在后台处理。

返回语句充分性

在处理需要关闭的请求时,必须从处理函数返回以表示其完成。这是因为,根据 http.Handler 文档,返回表示请求已完成,同时或返回后访问 ResponseWriter 或 Request.Body 是无效的。

省略最终返回

从处理函数返回足以关闭请求,因此您可以完全省略最终的返回语句。在 Go 中,当执行最后一条语句时,执行将退出函数,无论是否返回。

接受 202 的最小代码

如果您只需要要返回 202 已接受状态代码并继续在后台处理,以下最少代码就足够了:

<code class="go">func index(w http.ResponseWriter, r *http.Request) {
    w.WriteHeader(http.StatusAccepted)
    go sleep()
}</code>

并发使用的预防措施

请记住,访问从处理程序返回后,并发 Goroutine 中的 ResponseWriter 或 http.Request 值是不安全的,因为它们可能会被重用。

以上是如何在 Go 中保持后台处理的同时正确关闭状态为 202 Accepted 的 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn