def _get_socket_for_service(self): port = self._registry.next_available_port(self.name, self.guid, self.host) self.socket_type = "REP" self.connect_method = "bind" try: self.socket_type = self.config.get("global", "socket_type").upper() self.connect_method = self.config.get("global", "connect_method").lower() except ConfigParser.NoSectionError: pass except ConfigParser.NoOptionError: pass if self.socket_type not in self.VALID_SCK_TYPES: raise RuntimeError( "Socket type %s not in set [%s] of valid socket types" % (self.connect_method, ", ".join(self.VALID_SCK_TYPES))) if self.connect_method not in self.VALID_CONN_METHOD: raise RuntimeError( "Connect method %s not in set [%s] of valid methods" % (self.connect_method, ", ".join(self.VALID_CONN_METHOD))) connect_string = self.BASE_TCP_ADDR % ( "*" if self.connect_method == "bind" else self.host, port ) socket = zmq_socket_from_socket_type(self._context, self.socket_type) getattr(socket, self.connect_method)(connect_string) return port, socket
def socket_from_service_config(context, service_config, timeout=DEFAULT_TIME_OUT): socket = zmq_socket_from_socket_type(context, service_config["socket_type"]) connect_string = "tcp://%s:%d" % \ ("*" if service_config["connect_method"] == "bind" else service_config["host"], service_config["port"]) getattr(socket, service_config["connect_method"])(connect_string) socket.setsockopt(zmq.RCVTIMEO, timeout) socket.setsockopt(zmq.LINGER, 0) return socket