跳到主要内容

Fiber 中的平滑关闭

Github StackBlitz

fiberRecipes/graceful-shutdown on graceful-shutdown (f0834df) [?] via 🐹 v1.15.2 took 4s
❯ go run graceful-shutdown

┌───────────────────────────────────────────────────┐
│ Fiber v2.1.0 │
│ http://127.0.0.1:3000 │
│ │
│ Handlers ............. 2 Threads ............. 8 │
│ Prefork ....... Disabled PID .............. 2540 │
└───────────────────────────────────────────────────┘

^CGracefully shutting down...
Running cleanup tasks...

这展示了如何使用 Fiber 和 os/signal 包实现平滑关闭。

说明

此示例依赖于 channel 的使用,channel 是 Go 中的一种数据类型,允许您在应用程序中的特定位置之间发送和接收数据(在此处阅读更多相关信息:这里)。

创建了一个 channel,并使用 signal.Notify 注册,以便当程序接收到中断信号时(例如,按下 CTRL+C 时),向 channel 发送通知。收到通知后,会调用 app.Shutdown 以关闭所有活动连接并从 app.Listen 返回。在此之后,可以运行清理函数,程序最终退出。