def run(self): while True: if is_stopped: break try: data, addr, received_time = tasks_queue.get(timeout=1) received_packet = Packet(data=data) answer_packet = Packet(version=3, mode=4) # we think that we take from first level server answer_packet.stratum = 2 answer_packet.poll = 10 # emulate that we have taken time before receiving answer_packet.reference_time = received_time - 3 # copy time to originate field answer_packet.originate_time_high = received_packet.transmit_time_high answer_packet.originate_time_low = received_packet.transmit_time_low # fill receive and transmit times answer_packet.received_time = received_time answer_packet.transmit_time = time.time() + ZERO_TIME_DELTA # send packet to client socket.sendto(answer_packet.bytes(), addr) print("Answered to {0}:{1}".format(addr[0], addr[1])) except Empty: continue