2016-12-07 8 views

답변

5

업데이트 :

장고는 PAHO의 모듈 제작에서 도우미 기능을 사용할 수 있습니다 장고 응용 프로그램에서 메시지를 게시 한 후 여러 스레드에서 실행해야하는 경우 - 당신은 인스턴스를 만들 필요가 없습니다 https://eclipse.org/paho/clients/python/docs/#id17 을 이 경우 mqtt 클라이언트를 시작하고 루프를 시작하십시오. 그리고 어떤 주제에 가입하려면 mqtt 클라이언트를 독립 실행 형 스크립트로 실행하고 거기에 가져 오기를 장고 앱의 모듈이 필요합니다 (그리고 스크립트에서 장고 환경을 설정하는 것을 잊지 마십시오). 당신이 생산에 보통이 아닌 단일 스레드에서 장고를 실행하는 경우에만


답은 아래에 좋다.

응용 프로그램 폴더에 mqtt.py을 만들고 관련된 모든 코드를 입력하십시오. 예를 들면 :

import paho.mqtt.client as mqtt 

def on_connect(client, userdata, rc): 
    client.subscribe("$SYS/#") 

def on_message(client, userdata, msg): 
    # Do something 
    pass 

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

client.connect("iot.eclipse.org", 1883, 60) 

여기 loop_forever()를 호출하지 마십시오! 응용 프로그램 __init__.py 전화 loop_start()에서 다음

:

from . import mqtt 

mqtt.client.loop_start() 

loop_start() 대신 loop_forever()의 사용은 백그라운드 스레드를 차단하지 줄 것이다.

+0

감사합니다. Max가 작동합니다. 또 다른 의심이 있습니다. 웹 프로세스를 확장하면 다중 mqtt 클라이언트가 생성됩니까? 그렇다면 어떻게 중지합니까? –

+0

@ RajaSudhan "웹 프로세스 확장"이란 무엇을 의미합니까? –

+0

프로덕션 환경에서 django 애플리케이션을 실행하는 동안로드 밸런서가있는 여러 서버에 배포 중이므로 모든 호스트의 메시지를 듣고 싶지 않습니다. –

관련 문제