#子进程 #热重载 #信号 #交换 #用户事件 #代理 #响应

bin+lib swaperooni

根据用户提供的事件热重载子进程。将信号代理到子进程中。

1 个不稳定版本

0.1.0 2023 年 12 月 31 日

#672 in Unix API

MIT 许可证

22KB
537

swaperooni

在不终止父进程 PID 的情况下热重载子进程。将信号代理到子进程中。

Rust

  • 如果子进程退出,swaperooni 将以相同的代码退出。
  • 如果发出交换请求,将终止子进程,并启动新的子进程。

支持两种热重载请求选项

  • ipc - 从子进程向 swaperooni 套接字发送以换行符分隔的命令字符串。见 examples/ipc_bash_hopscotch/main.sh
  • poll - 监控文件的 mtime。在更改时重新执行它。

swaperooni 不是一个管理器。 swaperoonitini 类似。

为什么

因为你可以。通常,避免使用此功能,并使用管理器/编排器。你可能有一些情况下交换子进程 PID 更可取(例如,奇特的 docker/k8s 环境)。

如何

查看示例。

  • SOCKET_PATH=demo.sock cargo run ipc -- bash examples/ipc_bash_hopscotch/a.sh
    • 程序 a 短暂运行后,请求被交换为程序 bb 请求程序 c,而 c 则优雅地退出。
  • SOCKET_PATH=demo.sock cargo run ipc--运行示例/ipc_node_counter/索引.mjs0
    • 运行一个 node.js 进程。该进程请求 swaperooni 再次运行自己,但使用不同的参数(计数器)
  • cargo运行 poll --poll-interval-ms=1000 --examples/poll_countdown/main.sh 5
    • 轮询入口点更改并重新运行它。

性能

嗯,它小于 1MB,并且大多数时候什么都不做。

依赖项

~4–11MB
~96K SLoC