#sockets #systemd #文件描述符 #套接字激活 #TCP 监听器 #系统

listenfd

一个简单的库,用于处理从外部传入的 listenfds(systemd/catflap 套接字激活)

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

Download history 12095/week @ 2024-03-14 10678/week @ 2024-03-21 11301/week @ 2024-03-28 12689/week @ 2024-04-04 13409/week @ 2024-04-11 14529/week @ 2024-04-18 15205/week @ 2024-04-25 14892/week @ 2024-05-02 14811/week @ 2024-05-09 22084/week @ 2024-05-16 16147/week @ 2024-05-23 20631/week @ 2024-05-30 19881/week @ 2024-06-06 23968/week @ 2024-06-13 22759/week @ 2024-06-20 19590/week @ 2024-06-27

每月 89,986 次下载
用于 30 个 crate(28 个直接使用)

Apache-2.0

19KB
295 代码行数(不含注释)

listenfd

Build Status Crates.io License rustc 1.42.0 Documentation

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 打开的套接字。不再有连接重置。

依赖项

~0.4–270KB