2个不稳定版本
0.2.0 | 2023年8月27日 |
---|---|
0.1.0 | 2023年7月31日 |
#767 in Unix APIs
592 monthly downloads
8KB
114 代码行数,不包括注释
sd-listen-fds
暴露systemd、Linux init守护进程传入的文件描述符,无依赖,既不是国外的也不是其他。使纯Rust中实现socket激活服务变得简单。
与自行打开套接字的服务不同,socket激活服务是按需启动的,可以与其依赖项同时启动,并且可以在不丢失入站数据的情况下重启。可移植应用程序可以调用 sd_listen_fds::get()
并打开自己的套接字,如果成功并且返回空 Vec
。
还可以参考由外部 libsystemd
库暴露的 sd_listen_fds API。与使用 libsystemd
绑定相比,这个crate更小、更安全,并且可以在任何地方构建。
示例
let fds = sd_listen_fds::get().unwrap();
let (_name, fd) = fds
.into_iter()
.next()
.expect("must be launched as a systemd socket-activated service");
let socket = TcpListener::from(fd);
my-service.socket(另见 systemd.socket)
[Socket]
# TCP port number. Other types of sockets are also possible.
ListenStream=1234
[Install]
WantedBy=sockets.target
[Unit]
Description=My Rust service
Documentation=https://example.com/my-service/
my-service.service(另见 systemd.service)
[Service]
ExecStart=/path/to/my-service
[Unit]
Requires=my-service.socket
Description=My Rust service
Documentation=https://example.com/my-service/
许可证
根据以下任一许可证授权
- Apache许可证2.0版(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非你明确声明,否则根据Apache-2.0许可证定义,你有意提交给作品的所有贡献,将如上所述双重授权,没有任何额外的条款或条件。