如何修复Rust中的资源暂时不可用错误?

时间:2019-03-06 17:24:31

标签: rust rust-actix

这是错误日志:

note: Run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
        thread 'arbiter:724dcce3-b3b3-4523-8b02-3b2e9fa035dd:actix-net-worker-62' panicked at 'called `Result::unwrap()` on an `Err` value: Os { code: 11, kind: WouldBlock, message: "Resource temporarily unavailable" }', src/libcore/result.rs:997:5

这是我的服务器设置:

let _ = server::new(move || {
        App::with_state()
            // Enable logger
            .middleware(middleware::Logger::default())
            .resource("/default", |r| HttpResponse::Ok)
    })
    .bind(&localhost_port)
    .unwrap_or_else(|_| panic!("Can not bind to {}", &localhost_port))
    .start();

我确实查看了另一个actix的示例includes

.shutdown_timeout(0)    // <- Set shutdown timeout to 0 seconds (default 60s)

但不要认为它可以为我解决问题。

在本地运行正常,但是当我在Ubuntu 16.04上执行二进制文件时,会显示此错误。

这是一个相关的问题:https://stackoverflow.com/a/14370767建议设置setting a send timeout with the SO_SNDTIMEO socket option

1 个答案:

答案 0 :(得分:0)

您的问题与Rust(或Actix)无关。您的问题是某些其他程序已经在您尝试绑定到的同一端口上进行侦听。您需要确定它是哪个程序,例如:

sudo netstat -an --program | grep $PORT

(用您的端口号替换$PORT),然后杀死该程序或使用其他端口。