Mercurial > piecrust2
view piecrust/records.py @ 113:de257cc40ce1
Re-enable proper caching of rendered segments in server.
The server keeps records on files that are processed while the server is
running. Disk caching is simply disabled for files that are known to use
other pages -- because unlike the baker, there's no cheap way to know
which files are up to date or not, and rendering is faster enough anyway.
author | Ludovic Chabant <ludovic@chabant.com> |
---|---|
date | Sun, 19 Oct 2014 00:30:44 -0700 |
parents | e88e330eb8dc |
children | 133845647083 |
line wrap: on
line source
import os import os.path import pickle import logging from piecrust.events import Event logger = logging.getLogger(__name__) class Record(object): def __init__(self): self.entries = [] self.entry_added = Event() def addEntry(self, entry): self.entries.append(entry) self.entry_added.fire(entry) def save(self, path): path_dir = os.path.dirname(path) if not os.path.isdir(path_dir): os.makedirs(path_dir, 0o755) with open(path, 'wb') as fp: pickle.dump(self, fp, pickle.HIGHEST_PROTOCOL) def __getstate__(self): odict = self.__dict__.copy() del odict['entry_added'] return odict def __setstate__(self, state): for k, v in state.items(): setattr(self, k, v) self.entry_added = Event() @staticmethod def load(path): logger.debug("Loading bake record from: %s" % path) with open(path, 'rb') as fp: return pickle.load(fp)