Show HN:RSVP —— 一个用于 HTTP 服务器优雅关闭的 Go 库
在反复复制修改 Go HTTP 优雅关闭的样板代码后,作者将其封装为名为 RSVP 的库。RSVP 提供的 rsvp.ListenAndServe 是标准库 http.ListenAndServe 的即插即用替代函数,支持优雅关闭。可通过选项自定义触发信号、关闭超时、上下文、TLS 和日志记录,完整文档与示例代码见 pkg.go.dev。
背景速读
- Go 是 Google 开发的开源编程语言,广泛用于后端服务和基础设施软件。HTTP 服务器优雅关闭(graceful shutdown)指服务器收到停止信号后,不再接受新请求,但继续处理完已有的活跃连接再真正退出,避免正在响应的用户突然中断。
- Go 标准库虽然提供了基础的 HTTP 服务器,但优雅关闭需要开发者自行编写多个信号处理、超时控制和上下文传播的代码。很多 Go 开发者每次建新项目都要重复写这套样板(boilerplate)代码。
- rsvp 是一个将这套样板封装成一行调用的开源库,名字取自 "please respond"(请回复),双关 HTTP 请求-响应模型。作者 jbarham 是澳大利亚资深 Go 开发者,此前贡献过 Go 生态中常用的 SQLite 驱动和 DNS 库。
- 该库的主要价值在于:把过去需要每个项目手动复制的十几行关键代码标准化为可复用、可配置的单一函数,属于"小而精"的 Go 工具库类型。