from pypibot import log import threading import zmq class MqProxy: def __init__(self, sub_addr, pub_addr): self.thd = None self.sub_addr = sub_addr self.pub_addr = pub_addr def _run(self): context = zmq.Context() frontend = context.socket(zmq.XSUB) frontend.bind(self.sub_addr) # frontend.bind("tcp://*:5556") backend = context.socket(zmq.XPUB) backend.bind(self.pub_addr) # backend.bind("tcp://*:5557") try: zmq.proxy(frontend, backend) except KeyboardInterrupt: pass frontend.close() backend.close() context.term() def start(self): if self.thd is None: log.i("mq proxy starting...") self.thd=threading.Thread(target=self._run, name="proxy") self.thd.setDaemon(True) self.thd.start() def stop(self): pass