我的应用程序基于一个使用 actix 和 actix-web 的库 (Library-A)。我正在添加第二个运行 http 服务器的库 (Library-B),也使用 actix-web。我为此使用了一个单独的线程actix::system
。在 SIGINT 上,只有 Library-B actix 系统关闭,而 Library-A 仍在运行。没有后续的 SIGINT 关闭正在运行的 actix 系统。
优雅关闭两个正在运行的 actix 系统的正确方法是什么?
Library-B 的代码,用于启动一个新的 actix 系统并运行一个 http 服务器:
thread::spawn(move || {
let sys = actix::System::new("monitor");
server::new(|| App::new()
.route("/metrics", http::Method::GET, endpoint))
.bind(format!("0.0.0.0:{}", port))
.unwrap()
.start();
sys.run();
println!("Closing monitor actix system");
// --- SIGINT gets me here... how do I shut down gracefully?
});
我为独立图书馆启动新系统是否正确?如何优雅地关闭?