2017-11-29 1 views
-2

다른 파이썬 모듈에서 콜백 함수를 정의했습니다. paho.mqtt 클라이언트 콜백에 다른 모듈에 정의 된 콜백을 어떻게 첨부합니까? 에 대한. 예를 들어 데이터베이스에 연결하고 데이터베이스 및 mqtt.client() 인스턴스를 만들고 브로커에 연결하여 주제에 가입하는 mqttbroker.py 모듈에 메시지를 저장하는 등의 모든 데이터베이스 작업을 수행하는 database.py가 있습니다. on_connect 및 on_disconnect와 같은 콜백을 정의 할 수 있습니다. 이제 on_message mqtt 콜백에서 database.py 모듈에 콜백 함수를 만들었습니다. 이 콜백은 어떻게 첨부합니까? database.py 및 mqttbroker.py 모듈을 가져 오는 main.py (내 클라이언트)가 있습니다.파이썬의 다른 클래스 모듈에서 paho mqtt 콜백

+0

당신이 찾고 있던 분리가 깨졌습니다. 콜백을'mqttbroker.py'로 옮기고'database.py'를 호출하십시오. – hardillb

+0

코드를 실제로 편집하려면 질문을 편집하십시오. – hardillb

+0

감사합니다. 아래 코드를 찾으십시오. 이제 작동합니다. – Mythri

답변

0

인터페이스를 정의하고 해당 인터페이스를 클라이언트 모듈에서 호출하고 데이터베이스 모듈에 정의 된 콜백을 인터페이스라고합니다.

#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

이 코드는 의미가 없습니다. – hardillb

+0

이 코드는 데이터베이스, 클라이언트 및 메시지 브로커 모듈을 분리하는 방법에 대한 가능성을 확인하기 위해 일부 인프라 테스팅 목적을 프로토 타이핑하기위한 것입니다. – Mythri

관련 문제