try: self.p.terminate() # sends a SIGTERM self.wait() except OSError: pass self.stopped.set() if not self.stopped.is_set(): gevent.spawn(shutdown) return self.stopped # ZMQ ############################################################################### if not zmq.zmq_version().startswith('3.2'): raise Exception( 'zmq version out of sync, aborting to not annihilate all services') BOTH = 3 SEND = 2 RECV = 1 class Base(object): def __init__(self, port, host=None, method=None, pool=None, name='', **kw): self.stopped = False socket_type = self.__zmq_socket_type__ if not method: method = self.__zmq_method__
def __init__(self, ctx, pipe, outbox, *args, **kwargs): self._ctx = ctx #... until we use zbeacon actor self._pipe = pipe # We send command replies and signals to the pipe # Pipe back to application self.outbox = outbox # Outbox back to application self._terminated = False # API shut us down self._verbose = False # Log all traffic (logging module?) self.beacon_interface = '' # Beacon interface self.beacon_port = ZRE_DISCOVERY_PORT # Beacon port number self.interval = 0 # Beacon interval 0=default self.beacon = None # Beacon actor self.beacon_socket = None # Beacon socket for polling self.poller = zmq.Poller() # Socket poller self.identity = uuid.uuid4() # Our UUID as object self.bound = False self.inbox = ctx.socket(zmq.ROUTER) # Our inbox socket (ROUTER) try: self.inbox.setsockopt(zmq.ROUTER_HANDOVER, 1) except AttributeError as e: logging.warning("can't set ROUTER_HANDOVER, needs zmq version >=4.1 but installed is {0}".format(zmq.zmq_version())) self.poller.register(self._pipe, zmq.POLLIN) self.name = str(self.identity)[:6] # Our public name (default=first 6 uuid chars) self.endpoint = "" # Our public endpoint self.port = 0 # Our inbox port, if any self.status = 0 # Our own change counter self.peers = {} # Hash of known peers, fast lookup self.peer_groups = {} # Groups that our peers are in self.own_groups = {} # Groups that we are in self.headers = {} # Our header values # TODO: gossip stuff #self.start() self.run()
def pytest_report_header(config, startdir): versions = (zmq.zmq_version(), zmq.__version__) print 'zmq: zmq-%s, pyzmq-%s' % versions
def shutdown(): try: self.p.terminate() # sends a SIGTERM self.wait() except OSError: pass self.stopped.set() if not self.stopped.is_set(): gevent.spawn(shutdown) return self.stopped # ZMQ ############################################################################### if not zmq.zmq_version().startswith('3.2'): raise Exception( 'zmq version out of sync, aborting to not annihilate all services') BOTH=3 SEND=2 RECV=1 class Base(object): def __init__(self, port, host=None, method=None, pool=None,