Как я могу исправить Resource временно недоступную ошибку в Rust? - PullRequest
0 голосов
/ 06 марта 2019

Вот журнал ошибок:

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 пример, который включает :

.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 голосов
/ 07 марта 2019

Ваша проблема не связана с Rust (или Actix).Ваша проблема в том, что какая-то другая программа уже прослушивает тот же порт, к которому вы пытаетесь подключиться.Вам нужно определить, какая это программа, например, с помощью:

sudo netstat -an --program | grep $PORT

(замена $PORT номером вашего порта), затем убить эту программу или использовать другой порт.

...