def _run_daily(self, list_of_mirrors=None, cache_size=20):
        """Pings the provided mirrors and handles post-ping operations.

        This function pings the provided operations and
        handles the following post-ping operations:
            Saves to cache: the cache will be used on daily scans.

            Adds to blacklist: mirrors that will be added to blacklist
            will not be pinged on daily scans.

            Switches to fastest mirror: sets the fastest mirror as the
            default upstream mirror.

        :param list_of_mirrors: the mirrors that should be pinged. (list)
        :param cache_size: the size of the mirrors to be saved in cache. (int)
        :returns sorted_mirrors: the result of the ping operation. (dict)
        """

        if not list_of_mirrors:
            list_of_mirrors = self._list_of_mirrors

        pinger = FastestMirrors()
        pinger.sort_mirrors_by_ping_avg(mirrors=list_of_mirrors)
        sorted_mirrors = pinger.sorted_mirrors

        cache = CacheManager(fastest_mirrors=pinger, cache_size=cache_size)
        cache.set_cached_mirrors_from_list()
        cache.save()

        self._parser.switch_to_fastest_mirror(
            mirror=next(iter(cache.cache_mirrors.keys())))
        return sorted_mirrors