問題タブ [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.

0 投票する
1 に答える
676 参照

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::stopthread::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_signalAtomicBool、イベント ハンドラで I を true に設定します。代わりに、何らかの方法でこれを行うことができるかどうかを確認しますactix_rt