プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2023/04/05

[Python] SyslogHandler でログを送信したときに `Bad file descriptor` のエラーになる

event_note2023/04/05 4:24

SyslogHandler を使ってログを記録していたのですが、Bad file descriptor のエラーが表示されてはまってしまいました。

表示されたエラーは以下です。

Traceback (most recent call last):
  File "/usr/lib/python3.8/logging/handlers.py", line 940, in emit
    self.socket.sendto(msg, self.address)
OSError: [Errno 9] Bad file descriptor

アプリをマルチプロセスで動かしており、FastAPI ( +uvicorn) を使うとこのエラーが出るようになりました。

環境

  • Python 3.8.10

対処方法

調べても原因がさっぱりわからなかったのですが、最終的に以下のページにたどり着きました。

どうやら Python の logging モジュールの不具合のようで、Python のバージョンを 3.11 まで上げると直りました。