항상 실행 중이며 메시지를 보내고 보내는 Paho MQTT Python 서비스를 구현하고 싶습니다. 인스턴스에 오류가 발생하면 다시 시작해야합니다.여러 Paho MQTT 클라이언트를 서비스/데몬으로 실행하는 방법
각 클래스는 paho의 loop_start()를 사용하여 스레드 된 네트워크 루프를 시작하는 두 개의 클래스를 구현했습니다. 그런 다음이 클래스에는 다른 클래스를 호출하는 콜백 함수가 있습니다. 지금은
은 내가 클래스를 호출하고 루프 간단한 파이썬 스크립트가 : 여기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)
그리고 내 클래스 "하나"그러나
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 대신 절임 된 메시지) my "is_alive"-function은 True를 반환하지만 파 호 구현은 더 이상 응답하지 않습니다. 따라서 더 이상의 메시지는 on_message로 전송되지 않습니다. 그래서 수업의 일부분 만 여전히 반응합니다!? 클래스 "2"는 여전히 응답하며 스크립트는 "while true"로 실행됩니다.
클래스의 기능을 올바르게 확인하려면 어떻게해야합니까?
[서비스로 실행되는 Python 스크립트 작성 방법] (https://stackoverflow.com/questions/16420092/how-to-make-python-script-run-as-service) – LeopoldVonBuschLight