def _decache(self, bytes): # _find_orphans() # _update_cache(clean=True) if bytes <= 0: return 0 LOG.warning("CliMetLab cache: trying to free %s", bytes_to_string(bytes)) total = 0 with self.connection as db: latest = self._latest_date() for stmt in ( "SELECT * FROM cache WHERE size IS NOT NULL AND owner='orphans' AND creation_date < ?", "SELECT * FROM cache WHERE size IS NOT NULL AND creation_date < ? ORDER BY last_access ASC", ): for entry in db.execute(stmt, (latest,)): total += self._delete_entry(entry) if total >= bytes: LOG.warning( "CliMetLab cache: freed %s from cache", bytes_to_string(bytes), ) return total LOG.warning("CliMetLab cache: could not free %s", bytes_to_string(bytes))
def _repr_html_(self): update_cache() html = [css("table")] with connection() as db: for n in db.execute("SELECT * FROM cache"): html.append("<table class='climetlab'>") html.append("<td><td colspan='2'>%s</td></tr>" % (n["path"], )) for k in [x for x in n.keys() if x != "path"]: v = bytes_to_string(n[k]) if k == "size" else n[k] html.append("<td><td>%s</td><td>%s</td></tr>" % (k, v)) html.append("</table>") html.append("<br>") return "".join(html)
def _repr_html_(self): """Return a html representation of the cache . Returns ------- str HTML status of the cache. """ html = [css("table")] with self.connection as db: for n in db.execute("SELECT * FROM cache"): html.append("<table class='climetlab'>") html.append("<td><td colspan='2'>%s</td></tr>" % (n["path"],)) for k in [x for x in n.keys() if x not in ("path", "owner_data")]: v = bytes_to_string(n[k]) if k == "size" else n[k] html.append("<td><td>%s</td><td>%s</td></tr>" % (k, v)) html.append("</table>") html.append("<br>") return "".join(html)
def test_bytes(): assert bytes_to_string(10) == "10" assert bytes_to_string(1024) == "1 KiB" assert bytes_to_string(1024 * 1024) == "1 MiB"