2025年7月29日火曜日

Python の fluent-logger でタイムアウトを設定する方法

Python の fluent-logger でタイムアウトを設定する方法

概要

過去に fluent-logger の使い方を紹介しました
今回は fluent-logger でタイムアウトを設定する方法を紹介します

環境

  • macOS 15.5
  • Python 3.12.11
  • fluent-logger 0.11.1

サンプルコード

from fluent import sender

# デフォルトのタイムアウトは3.0秒
logger = sender.FluentSender(
    "app",
    host="127.0.0.3",
    port=24224,
    timeout=10.0,
)
result = logger.emit("follow", {"from": "userA", "to": "userB"})
print(result)

最後に

FluentSender の場合もし host にアクセスできない宛先を指定しても Exception は発生しません
emit してその結果を True/Flase を確認することで初めて送れたかどうかを確認できます
なので host にアクセス出来なかった理由が詳細にわからないので注意しましょう

事前に host に接続できるかどうかチェックしたい場合は以下のようなメソッドを自前で準備する必要がありそうです

import socket

def check_fluentd_reachable(host, port, timeout=2):
    try:
        with socket.create_connection((host, port), timeout):
            return True
    except Exception as e:
        print(f"[FluentD Unreachable] {e}")
        return False

if check_fluentd_reachable('localhost', 24224):
    logger.emit('app.test', {'message': 'hi'})
else:
    print("Fluentd に接続できません")

参考サイト

0 件のコメント:

コメントを投稿