<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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