12 个版本 (2 个稳定版)
1.0.1 | 2023 年 3 月 10 日 |
---|---|
1.0.0 | 2022 年 5 月 31 日 |
0.5.0 | 2022 年 1 月 24 日 |
0.4.0 | 2022 年 1 月 15 日 |
0.1.1 | 2018 年 5 月 17 日 |
#20 in Unix API
每月 89,986 次下载
用于 30 个 crate(28 个直接使用)
19KB
295 代码行数(不含注释)
listenfd
listenfd 是一个 crate,提供对由外部管理并传递的文件描述符的支持。这允许您使用支持套接字激活或类似功能的系统。
目前该库支持 Unix 上的 systemd 和 Unix 以及 Windows 上的 systemfd。systemfd 与 cargo-watch 结合使用非常方便,而 systemd 则适用于 Linux 的生产部署。
示例
use listenfd::ListenFd;
let mut listenfd = ListenFd::from_env();
let mut server = make_a_server();
// if we are given a tcp listener on listen fd 0, we use that one
server = if let Some(listener) = listenfd.take_tcp_listener(0)? {
server.listen(listener)
// otherwise fall back to local listening
} else {
server.bind("127.0.0.1:3000")?
};
您可以使用 cargo watch 和 systemfd 来使用它
$ cargo install systemfd cargo-watch
systemfd --no-pid -s http::3000 -- cargo watch -x run
现在 systemfd 将打开套接字并保持打开状态。cargo watch 将根据需要重新编译代码,服务器将获取 systemfd 打开的套接字。不再有连接重置。
许可和链接
- 文档
- 问题跟踪器
- 示例
- 许可: Apache-2.0
依赖项
~0.4–270KB