Python zmq.SNDTIMEO Examples
The following are 14
code examples of zmq.SNDTIMEO().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
zmq
, or try the search function
.
Example #1
Source File: jrpc_py.py From TradeSim with Apache License 2.0 | 6 votes |
def _do_connect(self): client_id = str(random.randint(1000000, 100000000)) socket = self._ctx.socket(zmq.DEALER) identity = (client_id) + '$' + str(random.randint(1000000, 1000000000)) identity = identity.encode('utf-8') socket.setsockopt(zmq.IDENTITY, identity) socket.setsockopt(zmq.RCVTIMEO, 500) socket.setsockopt(zmq.SNDTIMEO, 500) socket.setsockopt(zmq.LINGER, 0) socket.connect(self._addr) return socket
Example #2
Source File: test_zeromq_client.py From jsonrpcclient with MIT License | 5 votes |
def test_send_message_conn_error(self): client = ZeroMQClient("tcp://localhost:5555") # Set timeouts client.socket.setsockopt(zmq.RCVTIMEO, 5) client.socket.setsockopt(zmq.SNDTIMEO, 5) client.socket.setsockopt(zmq.LINGER, 5) with pytest.raises(zmq.error.ZMQError): client.send_message(str(Request("go")), response_expected=True)
Example #3
Source File: server.py From btgym with GNU Lesser General Public License v3.0 | 5 votes |
def _comm_with_timeout(socket, message): """ Exchanges messages via socket with timeout. Note: socket zmq.RCVTIMEO and zmq.SNDTIMEO should be set to some finite number of milliseconds Returns: dictionary: status: communication result; message: received message, if any. """ response=dict( status='ok', message=None, ) try: socket.send_pyobj(message) except zmq.ZMQError as e: if e.errno == zmq.EAGAIN: response['status'] = 'send_failed_due_to_connect_timeout' else: response['status'] = 'send_failed_for_unknown_reason' return response start = time.time() try: response['message'] = socket.recv_pyobj() response['time'] = time.time() - start except zmq.ZMQError as e: if e.errno == zmq.EAGAIN: response['status'] = 'receive_failed_due_to_connect_timeout' else: response['status'] = 'receive_failed_for_unknown_reason' return response return response
Example #4
Source File: control_client.py From lewis with GNU General Public License v3.0 | 5 votes |
def _get_zmq_req_socket(self): context = zmq.Context() context.setsockopt(zmq.REQ_CORRELATE, 1) context.setsockopt(zmq.REQ_RELAXED, 1) context.setsockopt(zmq.SNDTIMEO, self.timeout) context.setsockopt(zmq.RCVTIMEO, self.timeout) context.setsockopt(zmq.LINGER, 0) return context.socket(zmq.REQ)
Example #5
Source File: test_control_client.py From lewis with GNU General Public License v3.0 | 5 votes |
def test_zmq_socket_uses_timeout(self, mock_zmq_context): timeout = 100 ControlClient(host='127.0.0.1', port='10002', timeout=timeout) mock_zmq_context.assert_has_calls( [call().setsockopt(zmq.SNDTIMEO, timeout), call().setsockopt(zmq.RCVTIMEO, timeout)])
Example #6
Source File: zeromq_queue.py From plaso with Apache License 2.0 | 5 votes |
def _SetSocketTimeouts(self): """Sets the timeouts for socket send and receive.""" # Note that timeout must be an integer value. If timeout is a float # it appears that zmq will not enforce the timeout. timeout = int(self.timeout_seconds * 1000) receive_timeout = min( self._ZMQ_SOCKET_RECEIVE_TIMEOUT_MILLISECONDS, timeout) send_timeout = min(self._ZMQ_SOCKET_SEND_TIMEOUT_MILLISECONDS, timeout) self._zmq_socket.setsockopt(zmq.RCVTIMEO, receive_timeout) self._zmq_socket.setsockopt(zmq.SNDTIMEO, send_timeout)
Example #7
Source File: test_supvisorszmq.py From supvisors with Apache License 2.0 | 5 votes |
def setUp(self): """ Create a dummy supvisors, ZMQ context and sockets. """ from supvisors.supvisorszmq import RequestPusher, RequestPuller # the dummy Supvisors is used for addresses and ports self.supvisors = MockedSupvisors() # create pusher and puller self.pusher = RequestPusher(self.supvisors.logger) self.puller = RequestPuller() # socket configuration is meant to be blocking # however, a failure would block the unit test, # so a timeout is set for emission and reception self.puller.socket.setsockopt(zmq.SNDTIMEO, 1000) self.puller.socket.setsockopt(zmq.RCVTIMEO, 1000)
Example #8
Source File: jrpc_py.py From TradeApi with Apache License 2.0 | 5 votes |
def _do_connect(self): client_id = str(random.randint(1000000, 100000000)) socket = self._ctx.socket(zmq.DEALER) identity = (client_id) + '$' + str(random.randint(1000000, 1000000000)) identity = identity.encode('utf-8') socket.setsockopt(zmq.IDENTITY, identity) socket.setsockopt(zmq.RCVTIMEO, 500) socket.setsockopt(zmq.SNDTIMEO, 500) socket.setsockopt(zmq.LINGER, 0) socket.connect(self._addr) return socket
Example #9
Source File: jrpc_py.py From DataApi with Apache License 2.0 | 5 votes |
def _do_connect(self): client_id = str(random.randint(1000000, 100000000)) socket = self._ctx.socket(zmq.DEALER) identity = (client_id) + '$' + str(random.randint(1000000, 1000000000)) identity = identity.encode('utf-8') socket.setsockopt(zmq.IDENTITY, identity) socket.setsockopt(zmq.RCVTIMEO, 500) socket.setsockopt(zmq.SNDTIMEO, 500) socket.setsockopt(zmq.LINGER, 0) socket.connect(self._addr) return socket
Example #10
Source File: rpc.py From huobi with MIT License | 5 votes |
def __init__(self, repPort=6868, pubPort=6869): # 请求端口和订阅端口 self.__rpcFunc = {} self.__ctx = zmq.Context() self.__repSocket = self.__ctx.socket(zmq.REP) self.__pubSocket = self.__ctx.socket(zmq.PUB) self.__repSocket.bind(f'tcp://*:{repPort}') self.__pubSocket.bind(f'tcp://*:{pubPort}') self.__repSocket.setsockopt(zmq.SNDTIMEO, 3000) self._active = False
Example #11
Source File: base.py From btgym with GNU Lesser General Public License v3.0 | 4 votes |
def _comm_with_timeout( socket, message,): """ Exchanges messages via socket, timeout sensitive. Args: socket: zmq connected socket to communicate via; message: message to send; Note: socket zmq.RCVTIMEO and zmq.SNDTIMEO should be set to some finite number of milliseconds. Returns: dictionary: `status`: communication result; `message`: received message if status == `ok` or None; `time`: remote side response time. """ response = dict( status='ok', message=None, ) try: socket.send_pyobj(message) except zmq.ZMQError as e: if e.errno == zmq.EAGAIN: response['status'] = 'send_failed_due_to_connect_timeout' else: response['status'] = 'send_failed_for_unknown_reason' return response start = time.time() try: response['message'] = socket.recv_pyobj() response['time'] = time.time() - start except zmq.ZMQError as e: if e.errno == zmq.EAGAIN: response['status'] = 'receive_failed_due_to_connect_timeout' else: response['status'] = 'receive_failed_for_unknown_reason' return response return response
Example #12
Source File: base.py From btgym with GNU Lesser General Public License v3.0 | 4 votes |
def _start_server(self): """ Configures backtrader REQ/REP server instance and starts server process. """ # Ensure network resources: # 1. Release client-side, if any: if self.context: self.context.destroy() self.socket = None # 2. Kill any process using server port: cmd = "kill $( lsof -i:{} -t ) > /dev/null 2>&1".format(self.port) os.system(cmd) # Set up client channel: self.context = zmq.Context() self.socket = self.context.socket(zmq.REQ) self.socket.setsockopt(zmq.RCVTIMEO, self.connect_timeout * 1000) self.socket.setsockopt(zmq.SNDTIMEO, self.connect_timeout * 1000) self.socket.connect(self.network_address) # Configure and start server: self.server = BTgymServer( cerebro=self.engine, render=self.renderer, network_address=self.network_address, data_network_address=self.data_network_address, connect_timeout=self.connect_timeout, log_level=self.log_level, task=self.task, ) self.server.daemon = False self.server.start() # Wait for server to startup: time.sleep(1) # Check connection: self.log.info('Server started, pinging {} ...'.format(self.network_address)) self.server_response = self._comm_with_timeout( socket=self.socket, message={'ctrl': 'ping!'} ) if self.server_response['status'] in 'ok': self.log.info('Server seems ready with response: <{}>'. format(self.server_response['message'])) else: msg = 'Server unreachable with status: <{}>.'.format(self.server_response['status']) self.log.error(msg) raise ConnectionError(msg) self._closed = False
Example #13
Source File: base.py From btgym with GNU Lesser General Public License v3.0 | 4 votes |
def _start_data_server(self): """ For data_master environment: - configures backtrader REQ/REP server instance and starts server process. For others: - establishes network connection to existing data_server. """ self.data_server = None # Ensure network resources: # 1. Release client-side, if any: if self.data_context: self.data_context.destroy() self.data_socket = None # Only data_master launches/stops data_server process: if self.data_master: # 2. Kill any process using server port: cmd = "kill $( lsof -i:{} -t ) > /dev/null 2>&1".format(self.data_port) os.system(cmd) # Configure and start server: self.data_server = BTgymDataFeedServer( dataset=self.dataset, network_address=self.data_network_address, log_level=self.log_level, task=self.task ) self.data_server.daemon = False self.data_server.start() # Wait for server to startup time.sleep(1) # Set up client channel: self.data_context = zmq.Context() self.data_socket = self.data_context.socket(zmq.REQ) self.data_socket.setsockopt(zmq.RCVTIMEO, self.connect_timeout * 1000) self.data_socket.setsockopt(zmq.SNDTIMEO, self.connect_timeout * 1000) self.data_socket.connect(self.data_network_address) # Check connection: self.log.debug('Pinging data_server at: {} ...'.format(self.data_network_address)) self.data_server_response = self._comm_with_timeout( socket=self.data_socket, message={'ctrl': 'ping!'} ) if self.data_server_response['status'] in 'ok': self.log.debug('Data_server seems ready with response: <{}>'. format(self.data_server_response['message'])) else: msg = 'Data_server unreachable with status: <{}>.'.\ format(self.data_server_response['status']) self.log.error(msg) raise ConnectionError(msg) # Get info and statistic: self.dataset_stat, self.dataset_columns, self.data_server_pid, self.data_lines_names = self._get_dataset_info()
Example #14
Source File: controller.py From GaragePi with MIT License | 4 votes |
def start(self): context = zmq.Context() socket = context.socket(zmq.ROUTER) socket.bind(self.__bind_addr) socket.setsockopt(zmq.SNDTIMEO, 1000) app.logger.info("Entering listen loop... ") try: while True: msg = socket.recv_multipart() app.logger.debug("Received msg: {0}".format(msg)) if len(msg) != 3: error_msg = 'invalid message received: %s' % msg app.logger.error(error_msg) reply = [msg[0], error_msg] socket.send_multipart(reply) continue # Break out incoming message id = msg[0] operation = bytes.decode(msg[1]) if type(msg[1]) is bytes else msg[1] contents = json.loads(bytes.decode(msg[2]) if type(msg[2]) is bytes else msg[2]) # Initialize the reply. Must always send back the id with ROUTER reply = [id] if operation == 'echo': # Just echo back the original contents serialized back to a string reply.append(self.__get_json_bytes(contents)) elif operation == 'get_status': # Get status and return reply.append(self.get_status().to_json_bytes()) elif operation == 'trigger_relay': # Trigger relay self.trigger_relay(contents['user_agent'], contents['login']) reply.append(b'{}') else: app.logger.error('unknown request') socket.send_multipart(reply) finally: app.logger.info('Closing down socket') socket.setsockopt(zmq.LINGER, 500) socket.close()