3 个稳定版本
2.1.0 | 2023 年 12 月 4 日 |
---|---|
2.0.0 | 2023 年 4 月 28 日 |
1.0.0 | 2023 年 4 月 4 日 |
#271 in Unix APIs
9,462 monthly downloads
38KB
658 lines
shellflip
Rust 中的优雅进程重启。
这个包通过在旧进程和新进程之间进行进程fork并传递少量状态,实现了在不中断现有连接的情况下升级或重新配置服务。一旦新进程成功启动,旧进程可以终止。
这个包有以下目标
- 升级成功后,旧代码不会继续运行(以及旧进程不可避免的关闭)
- 新进程有初始化的宽限期
- 初始化期间崩溃是正常的
- 始终只并行运行一个升级
- 升级发起的用户/进程可以知道升级是否成功
灵感来自 tableflip go 包,但不是直接替代品。
使用库
完整的示例可以在 restarter 示例服务 中找到。
主要的结构体是 RestartConfig
,它具有检测或启动重启的方法。对于关闭重启的进程,ShutdownCoordinator
提供了向派生任务发出关闭事件并等待其完成的方法。
许可证
BSD 许可。有关详细信息,请参阅 LICENSE 文件。
🦀ノ( º _ ºノ) - 尊重螃蟹!
依赖关系
~6–16MB
~200K SLoC