从Tokio应用程序使用Actix:混合actix_web::main和tokio::main?
目前我有一个像库的异步示例Reqwest一样编写的主要内容。
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
我们可以使用那里的确切示例。现在我想基本上添加一个-l <port>标志来改变我的应用程序的行为,当以这种方式触发时,我希望它侦听端口并运行 Web 服务器。我想使用这样记录的Actix Web,
#[actix_web::main]
async fn main() -> std::io::Result<()> {
我如何综合两个fn main:一个装饰#[actix_web::main]和一个装饰以#[tokio::main]从已经使用 Tokio 的应用程序中使用 Actix Web?我找不到有关此的任何文档?我们如何从 Actix Web 服务器使用 Tokio 的东西,我们如何将 Tokio 应用程序移植到 Actix Web 应用程序?
回答
由于 Actix-web 内部使用 Tokio,当您使用 时#[actix_web::main],您将能够使用所有常用的 Tokio 实用程序,就像使用#[tokio::main].
但是请注意,您需要正确匹配 Tokio 的版本。Actix-web 版本3.x.y使用 Tokio 0.2.x,因此在使用该版本的 Actix 时,您需要使用与该版本的 Tokio 配合使用的实用程序。要使用最新版本的 Tokio,您需要改用4.0.0-beta.xActix-web的版本。
一旦 Actix-web 4 结束测试,请随时编辑此答案。
THE END
二维码