メッセージを送受信しているPaho MQTT Pythonサービスを実装したいと思います。いずれかのインスタンスでエラーが発生した場合は、再起動する必要があります。複数のPaho MQTTクライアントをサービス/デーモンとして実行する方法
私は、それぞれがpahoのloop_start()でスレッドネットワークループを開始する2つのクラスを実装しました。これらのクラスには、他のクラスなどを呼び出すコールバック関数がいくつかあります。今の
私はクラスを呼び出し、ループシンプルなPythonスクリプトがあります。
from one import one
from two import two
import time
one()
two()
while True:
if one.is_alive():
print("one is still alive")
else:
print("one died - do something!")
time.sleep(1)
そして、ここに私のクラス「1」:しかし
import paho.mqtt.client as mqtt
import json
class one():
def __init__(self):
self.__client = mqtt.Client(client_id = "one")
self.__client.connect("localhost", 1883)
self.__client.subscribe("one")
self.__client.on_connect = self.__on_connect
self.__client.on_message = self.__on_message
self.__client.on_disconnect = self.__on_disconnect
self.__client.loop_start()
def __on_connect(self, client, userdata, flags, rc):
print("one: on_connect")
def __on_disconnect(self, client, userdata, flags, rc):
print("one: on_disconnect")
def __on_message(self, client, userdata, message):
str_message = message.payload.decode('utf-8')
message = json.loads(str_message)
print("one: on_message: " + str(message))
def is_alive(self):
return True
を - 私が作成したパッケージを送信する場合エラー(例えば、jsonではなく節約メッセージ)の "is_alive"関数はTrueを返していますが、paho実装はもはや応答しません。したがって、それ以上のメッセージはon_messageに送信されません。クラスの一部だけが依然として反応的です! クラス "two"はまだ応答しており、スクリプトは "while true"のままです。
どうすればそのようなクラスの機能を適切にチェックできますか?
[サービスとしてPythonスクリプトを実行する方法](https://stackoverflow.com/questions/16420092/how-to-make-python-script-run-as-service) – LeopoldVonBuschLight