Как опубликовать из многопроцессных в Paho Python MQTT - PullRequest
1 голос
/ 08 апреля 2019

Я запускаю скрипт на 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 в основном скрипте успешно публикует сообщение.При запуске многопроцессорной системы печатается сообщение, но оно не публикуется.

Почему функция публикации не работает в этом сценарии?

...