<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _acking(self, params=None):
 """ Packet acknowledge and retry loop :param params: Ignore :type params: None :rtype: None """

        while self._is_running:
            try:
                t, num_try, (ip, port), packet = self._to_ack.get(
                    timeout=self._select_timeout
                )
            except queue.Empty:
                # Timed out
                continue

            diff = t - time.time()
            if diff > 0:
                time.sleep(diff)

            with self._seq_ack_lock:
                if packet.header.sequence_number not in self._seq_ack:
                    # Not waiting for this?
                    continue

            if num_try <= self._retransmit_max_tries:
                # Try again
                self._send(ip, port, packet.pack(True))
                self._to_ack.put(
                    (
                        time.time() + self._retransmit_timeout,
                        num_try + 1,
                        (ip, port),
                        packet
                    )
                )
            else:
                # Failed to ack
                with self._seq_ack_lock:
                    try:
                        self._seq_ack.remove(packet.header.sequence_number)
                    except KeyError:
                        pass
                self.warning("Exceeded max tries")