code: def _chunk_send(self, metrics):
          
          messages = self._create_messages(metrics)
          request = self._create_request(messages)
          packet = self._create_packet(request)
  
          for host_addr in self.zabbix_uri:
              logger.debug('Sending data to %s', host_addr)
  
              # create socket object
              connection_ = socket.socket()
              if self.socket_wrapper:
                  connection = self.socket_wrapper(connection_)
              else:
                  connection = connection_
  
              connection.settimeout(self.timeout)
  
              try:
                  # server and port must be tuple
                  connection.connect(host_addr)
                  connection.sendall(packet)
              except socket.timeout:
                  logger.error('Sending failed: Connection to %s timed out after'
                               '%d seconds', host_addr, self.timeout)
                  connection.close()
                  raise socket.timeout
              except Exception as err:
                  # In case of error we should close connection, otherwise
                  # we will close it after data will be received.
                  logger.warn('Sending failed: %s', getattr(err, 'msg', str(err)))
                  connection.close()
                  raise Exception(err)
  
              response = self._get_response(connection)
              logger.debug('%s response: %s', host_addr, response)
  
              if response and response.get('response') != 'success':
                  logger.debug('Response error: %s}', response)
                  raise Exception(response)
  
          return response
docs: Send the one chunk metrics to zabbix server.
  
          :type metrics: list
          :param metrics: List of :class:`zabbix.sender.ZabbixMetric` to send
              to Zabbix
  
          :rtype: str
          :return: Response from Zabbix Server