How would a beginner implement this, Peter H.? Only loading it once every eight minutes sounds great to me, and I have no idea where to put your code.
On Mar 13, 9:47 am, peterh <peter.hau...@gmail.com> wrote: > this is what i use: > =================== > fromjinja2import Environment, FunctionLoader , TemplateNotFound > from google.appengine.api import memcache > import os,logging > VERSION = os.environ['CURRENT_VERSION_ID'] > > logging.warn ("COLD START") > def jinja2_template_loader(templatename): > templatepath = os.path.abspath(os.curdir+'/ > template/'+templatename) > template = memcache.get(templatepath+VERSION) > logging.debug( "......INSIDE JINJA....") > if template is None: > try: > logging.debug( "......READ....") > template = file(templatepath).read() > memcache.set(templatepath+VERSION,template,time=500) > except: > template = None > return template > SERVER = os.environ.get('SERVER_SOFTWARE','').lower() > if SERVER.startswith('devel'): > logging.debug("...DEVEL JINJA....") > load_this = Environment(cache_size=0,loader = FunctionLoader > (jinja2_template_loader)) > else: > load_this = Environment(loader= FunctionLoader > (jinja2_template_loader)) > > def render(template_name,context): > template = load_this.get_template(template_name) > content = template.render(context) > return content > > ========================= > > if your app handlers are cached (ie via "if __name__ == '__main__':main > ()") this should be imported only once per server instance. It also > caches templates both in memcache (for 8 minutes) and in instance > memory > > (in case of local testing, templates are not cached in memory, so you > can make changes and see the changes immediately) > > HTH > Peter > > On Mar 13, 7:34 am, Jarek Zgoda <jarek.zg...@gmail.com> wrote: > > > > > If you move Environment creation routine to another module it will be > > cached by Google, but only for few seconds (2-3?), so if your > > application does not get enough traffic you'd gain nothing from this. > > > In my attempts to speedup things I discovered that only loader can be > > cached, but it has to be invalidated upon each new deployment so its > > key has to have application version added (this is how I did key > > versioning in my caching tools). Unfortunately, the gain from this > > caching approaches 0. > > > And the last thing: Armin Ronacher, the guy behind Jinja, is aware of > > the problem and has some ideas on how to improve things on GAE, > > hopefully including template bytecode caching (this would be really > > super-nice!). > > > On 13 Mar, 00:38, pedepy <paul.ro...@gmail.com> wrote: > > > > hey so i usejinja2templates because they are better [no citation > > > needed], but from what i understand, loading thejinja2environment > > > can be quite an expensive task. Through logging, I have found out that > > > each request to / loads the environment over and over.. I have those > > > routines in a seperate python script (not the one that app.yaml > > > fowards requests to for /). > > > > anything im missing here ? I think this could be adding also an extra > > > 1000 cpu ms on every requests ... > > > > (by the way, i have tried the cookbook's memcache technique and it > > > only works locally, it fails on the google servers..) --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine" group. To post to this group, send email to google-appengine@googlegroups.com To unsubscribe from this group, send email to google-appengine+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en -~----------~----~----~----~------~----~------~--~---