Threading target which handles all updates for a given wait interval

def update_fileserver(self, interval, backends):
        '''
        Threading target which handles all updates for a given wait interval
        '''
        def _do_update():
            log.debug(
                'Performing fileserver updates for items with an update '
                'interval of %d', interval
            )
            for backend, update_args in six.iteritems(backends):
                backend_name, update_func = backend
                try:
                    if update_args:
                        log.debug(
                            'Updating %s fileserver cache for the following '
                            'targets: %s', backend_name, update_args
                        )
                        args = (update_args,)
                    else:
                        log.debug('Updating %s fileserver cache', backend_name)
                        args = ()

                    update_func(*args)
                except Exception as exc:
                    log.exception(
                        'Uncaught exception while updating %s fileserver '
                        'cache', backend_name
                    )

            log.debug(
                'Completed fileserver updates for items with an update '
                'interval of %d, waiting %d seconds', interval, interval
            )

        condition = threading.Condition()
        _do_update()
        while True:
            with condition:
                condition.wait(interval)
            _do_update()