2017-11-29 6 views
-2

Ich habe meine Callback-Funktion in einem anderen Python-Modul definiert. Wie füge ich diesen Callback, der in einem anderen Modul definiert ist, an paho.mqtt Client Callback an? Zum. ZB habe ich eine Datenbank.py, wo ich alle Datenbankoperationen wie Verbindung zur Datenbank und Speichern der Nachrichten in der Datenbank und mqttbroker.py Modul, wo ich eine mqtt.client() - Instanz erstellen und eine Verbindung zum Broker und abonnieren Sie die Themen und einige Callbacks wie on_connect und on_disconnect definieren. Jetzt für Callback on_message mqtt, habe ich die Callback-Funktion in meinem Modul Datenbank.py erstellt. Wie füge ich diesen Rückruf an? Ich habe main.py (mein Client), der das Modul database.py und mqttbroker.py importiert.paho mqtt Callbacks in verschiedenen Klassenmodulen in Python

+0

Das bricht die Trennung, die Sie suchten. Verschieben Sie den Rückruf in die Datei "mqttbroker.py" und rufen Sie die Datei "database.py" auf. – hardillb

+0

Bearbeiten Sie auch die Frage, um den Code – hardillb

+0

in Ordnung zu zeigen, danke. Bitte finden Sie den Code unten. Es funktioniert jetzt. – Mythri

Antwort

0

Definieren Sie die Schnittstelle und rufen Sie diese Schnittstelle im Clientmodul auf und hängen Sie den im Datenbankmodul definierten Rückruf an diese aufgerufene Schnittstelle an.

#mqttbroker.py 
def onMessage(self, callback): 
     self.client.on_message = callback 
     self.client.loop_forever() 

#database.py 
def on_message(self,client,userdata, msg) 
    #store messsages in db 

#main.py 
import mqqtbroker 
import database 

client = mqqtbroker() 
client.connect(host, port, 60) 
client.onMessage(database.on_message) 
+0

Dieser Code ist nicht sinnvoll. – hardillb

+0

Dieser Code dient nur zum Prototyping eines Infrastruktur-Testzwecks, um Möglichkeiten zu sehen, wie wir die Datenbank-, Client- und Nachrichtenbroker-Module trennen können. – Mythri

Verwandte Themen