概要
過去に 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 件のコメント:
コメントを投稿