def get(self, url, ignore_access_time=False):
key = hashlib.md5(url).hexdigest()<EOL>accessed = self._cache_meta_get(key)<EOL>if not accessed:<EOL><INDENT>self.debug("<STR_LIT>".format(url))<EOL>return None, None<EOL><DEDENT>if isinstance(accessed, dict):<EOL><INDENT>cached = CacheInfo.from_dict(accessed)<EOL><DEDENT>else:<EOL><INDENT>cached = CacheInfo(accessed)<EOL><DEDENT>now = now_utc()<EOL>if now - cached.access_time > self.duration and not ignore_access_time:<EOL><INDENT>self.debug("<STR_LIT>".format(url))<EOL>return None, cached<EOL><DEDENT>try:<EOL><INDENT>res = self._cache_get(key)<EOL><DEDENT>except:<EOL><INDENT>self.exception("<STR_LIT>")<EOL>self.debug("<STR_LIT>".format(url))<EOL>return None, None<EOL><DEDENT>self.debug("<STR_LIT>".format(url))<EOL>return res, cached<EOL>
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)