def daily_scan(self, cache_size=20, max_mirror_ping_avg=1.0):
        """Pings the cache file and handles post-ping operations.

        This function loads the cached mirrors from the cache file
        and do the following operations:

                Calls run_daily() function to ping and handle post-ping operations.

                Saves all the mirrors to file.

        In case there is no cache file or the cache file contains less mirrors than
        the half of the provided cache size, it calls a full run again.

        :param parser: the parser that will be used. (Parser-like class)
        :param cache_size: the size of the mirrors to be saved in cache. (int)
        """

        logger.debug('daily scan')

        if not path.exists(CACHED_MIRRORS_FILE_NAME) or self._file_len(
                CACHED_MIRRORS_FILE_NAME) < int(cache_size) / 2:
            logger.debug(
                'There was not a cached mirrors file, or number of cached mirrors'
                ' entries was less than half of the given cache_size')
            self.full_scan()
        else:
            cache = CacheManager(fastest_mirrors=FastestMirrors(),
                                 cache_size=cache_size)
            cache.load(max_mirror_ping_time=max_mirror_ping_avg)
            self._run_daily(cache.cache_mirrors.keys(), cache_size=cache_size)