def read_request(self, fileno):
        """Store information about the data request for processing"""
        try:
            new_request = self.connections[fileno].recv(
                WesEntropyDaemon.READ_SIZE)
            request = self.requests[fileno]['partial_req'] + new_request
        except IOError as error:
            if error.errno == errno.EAGAIN or error.errno == errno.EWOULDBLOCK:
                logging.warning("No data for recv to get. (error: %s)",
                                errno.errorcode[error.errno])
            else:
                logging.error("Error on recv (error: %s)",
                              errno.errorcode[error.errno])
                logging.debug("Calling handle_error on %s.", fileno)
                self.handle_error(fileno)

        num_requests = len(request) / 8

        logging.debug("Current num_requests: %i", num_requests)

        for index in range(num_requests):
            msg = DaemonMsg(request[8*index:8*index+8])
            if msg.is_rand_request():
                self.requests[fileno]['bytes_req'] += msg.get_num_bytes()
            elif msg.is_stats_request():
                self.requests[fileno]['send_stats'] = True
            else:
                continue

        self.requests[fileno]['partial_req'] = request[num_requests*8:]