gpt4 book ai didi

rust - 如何在actix-web服务器启动时运行回调函数?

转载 作者:行者123 更新时间:2023-12-03 11:23:48 25 4
gpt4 key购买 nike

目前,我的主要功能(服务器启动位置)如下所示

#[actix_rt::main]
async fn main() -> std::io::Result<()> {
let address = "0.0.0.0:3000";

HttpServer::new(move || {
let app_state = {...some state};
App::new()
.data(app_state)
.wrap(middleware::Logger::default())
.service(network_api::init_service())
})
.bind(address)?
.run()
.await
}

服务器启动后,我要运行一个(异步)功能,
向另一台服务器发出请求,并且该服务器应向该服务器发出另一请求
刚启动并运行。

不确定我在文档中是否看到任何提及仅在服务器启动时运行一次的回调函数的信息。

例如,可以在 run()函数中添加它,如下所示:

run(|| {
// server started now perform some request or whatever
Client::new().post(&url).json(json_stuff).send().await
})

编辑
我想我解决了,当我可以回答自己的问题时会发布答案

最佳答案

我已经通过加入2个异步函数解决了这个问题,
创建了另一个异步功能

async fn another_func() -> Result<()> {
...
}

并像这样使用了future::join()

let server = HttpServer::new(move || {
let app_state = {...some state};
App::new()
.data(app_state)
.wrap(middleware::Logger::default())
.service(network_api::init_service())
})
.bind(address)?
.run();

future::join(server, another_func()).await;

Ok(()

当然,如果有人有更好的答案,请发布

关于rust - 如何在actix-web服务器启动时运行回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62372448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com