Я запускаю скрипт на python для raspberry pi, который при получении сообщения MQTT выполняет функцию в многопроцессорном режиме.Публикация mqtt-сообщения из основного скрипта работает нормально и принимается брокером.Однако функция, которая запускается в новом процессе, не может быть опубликована.Нет сообщения об ошибке.Функция печатает журналы тестов, поэтому она определенно работает.
### on message, run function in a new process
def on_message(client, obj, msg):
def threaded_message():
print("Hello, process is running")
### This publish does not work!
mqttc.publish(topicStatus, "message received")
myProcess = multiprocessing.Process(target=threaded_message)
myProcess.start()
### MQTT setup
mqttc = mqtt.Client()
mqttc.on_message = on_message
mqttc.on_connect = on_connect
mqttc.on_publish = on_publish
mqttc.on_subscribe = on_subscribe
url_str = 'm24.cloudmqtt.com'
url_port = '16310'
topicStatus = "Home/Status"
topicCommands = "Home/Commands"
mqttc.username_pw_set(myUsername, myPassword)
mqttc.connect(url_str, url_port)
### This publish does work!
mqttc.publish(topicStatus, "Online")
mqttc.loop_forever()
Запуск mqttc.publish в основном скрипте успешно публикует сообщение.При запуске многопроцессорной системы печатается сообщение, но оно не публикуется.
Почему функция публикации не работает в этом сценарии?