docs: def run_forever(dyndnsclients):
      """
      Run an endless loop accross the give dynamic dns clients.
  
      :param dyndnsclients: list of DynDnsClients
      """
      while True:
          try:
              # Do small sleeps in the main loop, needs_check() is cheap and does
              # the rest.
              time.sleep(15)
              for dyndnsclient in dyndnsclients:
                  dyndnsclient.check()
          except (KeyboardInterrupt,):
              break
          except (Exception,) as exc:
              LOG.critical("An exception occurred in the dyndns loop", exc_info=exc)
      return 0