Fiber 中的平滑关闭
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
返回。在此之后,可以运行清理函数,程序最终退出。