問題タブ [rust-actix]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
docker - docker 内の Rust actix_web が達成できないのはなぜですか?
Rust プログラムの Docker コンテナを作成しようとしています。
Dockerfile
実行するコマンド:docker run -it -p 8080:8080 rust_rest_api/dev
しかし、外部からのカールは、つまり、チャネルの反対側で拒否されcurl -i -X POST -F files[]=@img.png 127.0.0.1:8080/upload
ますcurl: (56) Recv failure: Соединение разорвано другой стороной
しかし、コンテナ内:
ただし、docker なしでプログラムを実行すると、適切に機能し、curl からの同じ要求を適切に処理します。
そしてコンテナ内:
外部からの問題は何ですか?
rust - actix-web を Windows サービスとして実行する際の問題
windows-serviceを使用して actix Web アプリを実行しようとしています。優れた API を提供し、ほとんどの場合動作します。サービスを問題なく開始できます。ただし、サービスを停止しようとすると、次のエラーが表示されます: Error 109: The pipe has been ended
(ただし、サービスは停止します)。
私は主に に提供されている例を使用してwindows-service
いますが、関連するコードは次のとおりです (コンテキストとすべてのラッパー関数については、https://github.com/mullvad/windows-service-rs/blob/master/examples/を確認してください)。 ping_service.rs ):
を に入れるとSystem::stop
、thread::spawn
別のエラーが発生します: The service did not return an error. This could be an internal Windows error or an internal service error
。この場合、サービスは停止しません。
いくつかのログを記録しましたが、コードが を通過したようには見えませんsys.run().unwrap()
。これは奇妙です。
何かご意見は?これまで Windows Service API を使用したことがないため、何をしているのかよくわかりません。
編集
主な問題が何であるかを理解しました。サービスを停止する前に、サービスが停止したことを Windows に通知する必要があります。私はそれを機能させるために不格好な方法をまとめました:
ここshutdown_signal
でAtomicBool
、イベント ハンドラで I を true に設定します。代わりに、何らかの方法でこれを行うことができるかどうかを確認しますactix_rt
。