def get(self, url, ignore_access_time=False):
        """
        Try to retrieve url from cache if available

        :param url: Url to retrieve
        :type url: str | unicode
        :param ignore_access_time: Should ignore the access time
        :type ignore_access_time: bool
        :return: (data, CacheInfo)
            None, None -> not found in cache
            None, CacheInfo -> found, but is expired
            data, CacheInfo -> found in cache
        :rtype: (None | str | unicode, None | floscraper.models.CacheInfo)
        """
        key = hashlib.md5(url).hexdigest()
        accessed = self._cache_meta_get(key)

        if not accessed:
            # not previously cached
            self.debug("From inet {}".format(url))
            return None, None

        if isinstance(accessed, dict):
            cached = CacheInfo.from_dict(accessed)
        else:
            cached = CacheInfo(accessed)
        now = now_utc()
        if now - cached.access_time > self.duration and not ignore_access_time:
            # cached expired -> remove
            self.debug("From inet (expired) {}".format(url))
            return None, cached

        try:
            res = self._cache_get(key)
        except:
            self.exception("Failed to read cache")
            self.debug("From inet (failure) {}".format(url))
            return None, None
        self.debug("From cache {}".format(url))
        return res, cached
Try to retrieve url from cache if available

        :param url: Url to retrieve
        :type url: str | unicode
        :param ignore_access_time: Should ignore the access time
        :type ignore_access_time: bool
        :return: (data, CacheInfo)
            None, None -> not found in cache
            None, CacheInfo -> found, but is expired
            data, CacheInfo -> found in cache
        :rtype: (None | str | unicode, None | floscraper.models.CacheInfo)