import paho.mqtt.client as mqtt import ssl from threading import Thread import redis import time import signal import sys import os def sigint_handler(signal, frame): print 'Interrupted' sys.exit(0) os._exit(0) def on_connect(client, userdata, flags, rc): print("Connected with result code "+str(rc)) client.subscribe("$SYS/#") def on_publish(client, userdata, mid): pass def getRedis(i): r = redis.StrictRedis(host='localhost', port=6379, db=0) while 1: time.sleep(0) data = r.brpop("events", 10) if data: info = data[1].split('|') print "Channel: " + info[0] + " message: " + info[1] client.publish(info[0], info[1]) def sigint_handler(signal, frame): print 'Interrupted' sys.exit(0) client = mqtt.Client() client.on_connect = on_connect client.on_publish = on_publish client.tls_set( "/etc/letsencrypt/live/resqaws.jankstudio.com/fullchain.pem", cert_reqs=ssl.CERT_NONE, tls_version=ssl.PROTOCOL_TLSv1) client.connect("resqaws.jankstudio.com", 8883, 60) t = Thread(target=getRedis, args=(1,)) t.start() signal.signal(signal.SIGINT, sigint_handler) client.loop_forever()