3 个稳定版本

2.1.0 2023 年 12 月 4 日
2.0.0 2023 年 4 月 28 日
1.0.0 2023 年 4 月 4 日

#271 in Unix APIs

Download history 2035/week @ 2024-04-25 1785/week @ 2024-05-02 1534/week @ 2024-05-09 1779/week @ 2024-05-16 1780/week @ 2024-05-23 1420/week @ 2024-05-30 1847/week @ 2024-06-06 2238/week @ 2024-06-13 2199/week @ 2024-06-20 2288/week @ 2024-06-27 1769/week @ 2024-07-04 1961/week @ 2024-07-11 1980/week @ 2024-07-18 2481/week @ 2024-07-25 2685/week @ 2024-08-01 1971/week @ 2024-08-08

9,462 monthly downloads

BSD-3-Clause

38KB
658 lines

shellflip

crates.io docs.rs

Rust 中的优雅进程重启。

这个包通过在旧进程和新进程之间进行进程fork并传递少量状态,实现了在不中断现有连接的情况下升级或重新配置服务。一旦新进程成功启动,旧进程可以终止。

这个包有以下目标

  • 升级成功后,旧代码不会继续运行(以及旧进程不可避免的关闭)
  • 新进程有初始化的宽限期
  • 初始化期间崩溃是正常的
  • 始终只并行运行一个升级
  • 升级发起的用户/进程可以知道升级是否成功

灵感来自 tableflip go 包,但不是直接替代品。

使用库

完整的示例可以在 restarter 示例服务 中找到。

主要的结构体是 RestartConfig,它具有检测或启动重启的方法。对于关闭重启的进程,ShutdownCoordinator 提供了向派生任务发出关闭事件并等待其完成的方法。

许可证

BSD 许可。有关详细信息,请参阅 LICENSE 文件。

🦀ノ( º _ ºノ) - 尊重螃蟹!

依赖关系

~6–16MB
~200K SLoC