'cls._timeout_watcher runs in this loop forever.
It is usually waiting for the next timeout on the cls._new_timer Event.
When new timers are added, that event is set so that the watcher can
wake up and possibly set an earlier timeout.'

@classmethod
def service_timeouts(cls):

    timer_manager = cls._timers
    while True:
        next_end = timer_manager.service_timeouts()
        sleep_time = (max((next_end - time.time()), 0) if next_end else 10000)
        cls._new_timer.wait(sleep_time)
        cls._new_timer.clear()
