0

supervisorコンポーネントを初期化するために C ライブラリに依存する Python アプリケーション ( で実行) を使用すると、奇妙な動作が発生します。

私の問題は、関数を呼び出すときに、この C ライブラリによって出力された出力が表示されないことです。

アプリケーションのすべての出力はloggingモジュールで管理され、スーパーバイザーはそれを単一のログ ファイルにリダイレクトします。

だから私はこれが単なるflush問題だと思ったので、次のことを試しました:

lib.init_func()
sys.stdout.flush()
sys.stderr.flush()

しかし、うまくいきません。printf()ログ ファイルに自分が表示されません。

sudo supervisorctl restart all また、アプリケーションを再起動しようとすると、 C ライブラリの出力が最終的にログ ファイルの最後にフラッシュされることに気付き ました。

最後に、PYTHONUNBUFFERED=1supervisorctl を設定すると機能しますが、パフォーマンスの問題のためにプログラムをバッファリングせずに実行したくありません。

sys.stdout.flush()--> C ライブラリの呼び出し後に使用してもログ ファイルの出力がフラッシュされない理由を誰か説明できますか?

ありがとう !

4

0 に答える 0