問題タブ [actix-web]
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.
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
。