Как получить доступ к глобальным переменным в функции on_message с помощью MQTT и Python - PullRequest
0 голосов
/ 27 апреля 2019

Я пытаюсь напечатать сообщение с помощью MQTT, сохраняя его в переменной с именем test и печатая эту переменную.Мне нужно, чтобы эта переменная была доступна по всему сценарию.Некоторые примеры в Интернете показывают мне пример, подобный приведенному ниже, но test просто печатает ''.

Из моего изучения глобальных переменных и функций кажется, что "on_message" нужно вызывать перед "печатью теста", но я не уверен, как к этому подойти.

import paho.mqtt.client as mqtt

MQTT_SERVER = "localhost"
MQTT_PATH = "test_channel"

# The callback for when the client receives a CONNACK response from the server.
def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))

    # Subscribing in on_connect() means that if we lose the connection and
    # reconnect then subscriptions will be renewed.
    client.subscribe(MQTT_PATH)
test = '' 
# The callback for when a PUBLISH message is received from the server.
def on_message(client, userdata, msg):
    global test
    test = msg.payload
    #print(msg.topic+" "+str(msg.payload))
    # more callbacks, etc

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(MQTT_SERVER, 1883, 60)

# Blocking call that processes network traffic, dispatches callbacks and
# handles reconnecting.
# Other loop*() functions are available that give a threaded interface and a
# manual interface.
client.loop_start()

print test
...