2025年7月27日日曜日

paho-mqtt v2 を使う方法

paho-mqtt v2 を使う方法

概要

過去に paho-mqtt の使い方を紹介しました
その際は v1 でしたが v2 となりいろいろと変わっていたので使い方を紹介します

環境

  • macOS 15.5
  • Python 3.12.11
  • paho-mqtt 2.1.0

サンプルコード

前回同様 Client クラスを継承する形でクライアントを定義しています

  • vim app.py
from paho.mqtt.client import Client
from paho.mqtt.enums import CallbackAPIVersion


class CustomClient(Client):
    def __init__(self):
        super().__init__(callback_api_version=CallbackAPIVersion.VERSION2)

    def custom_on_disconnect(self, client, userdata, flags, reason_code, properties):
        print("on_disconnect")
        print(client)
        print(userdata)
        print(flags)
        print(reason_code)
        print(properties)

    def custom_on_publish(self, client, userdata, mid, reason_code, properties):
        print("on_publish")
        print(client)
        print(userdata)
        print(mid)
        print(reason_code)
        print(properties)
        self.disconnect()


if __name__ == "__main__":
    print("start")
    client = CustomClient()
    client.on_disconnect = client.custom_on_disconnect
    client.on_publish = client.custom_on_publish
    client.connect("localhost", port=1883, keepalive=60, bind_address="")
    client.publish(topic="default", payload='{"payload": "hoge"}', qos=0, retain=False)
    print("end")

変わっていた点

各種コールバックメソッドの引数が変わっています
具体的には flags, reason_code, properties が追加になっています
また Client を初期化する際に callback_api_version という引数が指定できることになっておりここに CallbackAPIVersion.VERSION2 を指定することで引数が追加になったコールバックメソッドを使うことができるようになっています

v2 のコードから Client クラスで on_disconnect がコールバック関数のみを受け取るように変更になっています
なので on_disconnect をオーバライドするのではなくコールバック用のメソッド自体を定義してその後そのコールバック用メソッドを on_disconnect に設定することでコールバックメソッドを設定します

最後に

v1 用のコールバックメソッドは非推奨になっており今後は v2 を使うことになるので今のうちにマイグレーションしておきましょう

参考サイト

0 件のコメント:

コメントを投稿