Exemplo n.º 1
0
 def _send_request(self, data: dict) -> None:
     """Send request to server via ZeroMQ System socket"""
     try:
         self.sys_socket.send_json(data)
         msg = self.sys_socket.recv_string()
         # terminal received the request
         assert msg == 'OK', 'Something wrong on server side'
     except AssertionError as err:
         raise zmq.NotDone(err)
     except zmq.ZMQError:
         raise zmq.NotDone("Sending request ERROR")
Exemplo n.º 2
0
    def _send_request(self, data: dict) -> None:
        """Send request to server via ZeroMQ System socket"""
        try:
            self.sys_socket.send_json(data)
            msg = self.sys_socket.recv_string()

            logger.debug("ZMQ SYS REQUEST: {} -> {}".format(data, msg))
            # terminal received the request
            assert msg == "OK", "Something wrong on server side"
        except AssertionError as err:
            raise zmq.NotDone(err)
        except zmq.ZMQError:
            raise zmq.NotDone("Sending request ERROR")
Exemplo n.º 3
0
 def _pull_reply(self):
     """Get reply from server via Data socket with timeout"""
     try:
         msg = self.data_socket.recv_json()
     except zmq.ZMQError:
         raise zmq.NotDone('Data socket timeout ERROR')
     return msg
Exemplo n.º 4
0
def _t_livedata():
    socket = api.live_socket()
    while True:
        try:
            last_candle = socket.recv_json()
        except zmq.ZMQError:
            raise zmq.NotDone("Live data ERROR")
        print(last_candle)
Exemplo n.º 5
0
 def _push_chart_data(self, data: dict) -> None:
     """Send message for chart control to server via ZeroMQ chart data socket"""
     try:
         if self.debug:
             print("ZMQ PUSH CHART DATA: ", data, " -> ", data)
         self.chart_data_socket.send_json(data)
     except zmq.ZMQError:
         raise zmq.NotDone("Sending request ERROR")
Exemplo n.º 6
0
 def _indicator_pull_reply(self):
     """Get reply from server via Data socket with timeout"""
     try:
         msg = self.indicator_data_socket.recv_json()
     except zmq.ZMQError:
         raise zmq.NotDone("Indicator Data socket timeout ERROR")
     logger.debug("ZMQ INDICATOR DATA REPLY: {}".format(msg))
     return msg
Exemplo n.º 7
0
 def _t_streaming_events(self):
     socket = api.streaming_socket()
     while True:
         try:
             trans = socket.recv_json()
             request, reply = trans.values()
         except zmq.ZMQError:
             raise zmq.NotDone("Streaming data ERROR")
Exemplo n.º 8
0
 def _pull_reply(self):
     """Get reply from server via Data socket with timeout"""
     try:
         msg = self.data_socket.recv_json()
     except zmq.ZMQError:
         raise zmq.NotDone("Data socket timeout ERROR")
     if self.debug:
         print("ZMQ DATA REPLY: ", msg)
     return msg
Exemplo n.º 9
0
    def _t_streaming_events(self):
        # create socket connection for the Thread
        socket = self.oapi.streaming_socket()
        while True:
            try:
                transaction = socket.recv_json()
            except zmq.ZMQError:
                raise zmq.NotDone("E: Streaming data ERROR")

            self._transaction(transaction)
Exemplo n.º 10
0
    def _t_livedata(self):
        # create socket connection for the Thread
        socket = self.oapi.live_socket()
        while True:
            try:
                last_candle = socket.recv_json()
            except zmq.ZMQError:
                raise zmq.NotDone("Live data ERROR")

            self.q_livedata.put(last_candle)
Exemplo n.º 11
0
    def _send_request(self, data: dict) -> None:
        """Send request to server via ZeroMQ System socket
        Lazy Pirate implementation.
        """
        # ram Caller's name
        print("I: Caller 2 ", sys._getframe(2).f_code.co_name)

        try:
            # ram sequence = 0
            retries_left = self.REQUEST_RETRIES
            while retries_left:
                self.sequence += 1
                request = str(self.sequence).encode()
                print("I: Sending (%s)" % self.sequence)
                print("data ", data)
                self.sys_socket.send_json(data)

                expect_reply = True
                while expect_reply:
                    socks = dict(self.poll.poll(self.SYS_TIMEOUT))
                    if socks.get(self.sys_socket) == zmq.POLLIN:
                        msg = self.sys_socket.recv_string()
                        if not msg:
                            break
                        # terminal received the request
                        if str(msg) == 'OK':
                            print("I: Server replied %s" % msg)
                            retries_left = 0
                            expect_reply = False
                        else:
                            print("E: Malformed reply from server: %s" % msg)

                    else:
                        print("W: No response from server, retrying…")
                        # Socket is confused. Close and remove it.
                        self.sys_socket.setsockopt(zmq.LINGER, 0)
                        self.sys_socket.close()
                        self.poll.unregister(self.sys_socket)
                        retries_left -= 1
                        if retries_left == 0:
                            print("E: Server seems to be offline, abandoning")
                            break
                        print("I: Reconnecting and resending (%s)" %
                              self.sequence)
                        # Create new connection
                        self.sys_socket = self.context.socket(zmq.REQ)
                        self.sys_socket.RCVTIMEO = self.SYS_TIMEOUT
                        self.sys_socket.connect('tcp://{}:{}'.format(
                            self.HOST, self.SYS_PORT))
                        self.poll.register(self.sys_socket, zmq.POLLIN)
                        self.sys_socket.send_json(data)

            # ram self.context.term()
        except zmq.ZMQError:
            raise zmq.NotDone("E: Sending request ERROR")
Exemplo n.º 12
0
    def _pull_reply(self):
        """ Get reply from data socket with timeout """
        poller = zmq.Poller()
        poller.register(self.data_socket, zmq.POLLIN)
        # timeout in milliseconds
        if poller.poll(self.poller_timeout * 1000):
            msg = self.data_socket.recv_json()
        else:
            raise zmq.NotDone('Timeout was reached...')

        return msg
Exemplo n.º 13
0
    def _t_livedata(self):
        # create socket connection for the Thread
        socket = self.oapi.live_socket()
        while True:
            try:
                last_data = socket.recv_json()
                logger.debug("ZMQ LIVE DATA: {}".format(last_data))
            except zmq.ZMQError:
                raise zmq.NotDone("Live data ERROR")

            self.q_livedata.put(last_data)
Exemplo n.º 14
0
    def _t_streaming_events(self):
        # create socket connection for the Thread
        socket = self.oapi.streaming_socket()
        while True:
            try:
                transaction = socket.recv_json()
                if self.debug:
                    print('ZMQ STREAMING TRANSACTION: ', transaction)
            except zmq.ZMQError:
                raise zmq.NotDone("Streaming data ERROR")

            self._transaction(transaction)
Exemplo n.º 15
0
    def _t_livedata(self):
        # create socket connection for the Thread
        socket = self.oapi.live_socket()
        while True:
            try:
                last_data = socket.recv_json()
                # if self.debug:
                print('ZMQ LIVE DATA: ', last_data)
            except zmq.ZMQError:
                raise zmq.NotDone("Live data ERROR")

            self.q_livedata.put(last_data)