Loading ...
Sorry, an error occurred while loading the content.

[Cheetahtemplate-discuss] Is this a good way to cache cheetah templates?

Expand Messages
  • mobiledreamers@gmail.com
    This is my first attempt at memcaching html page using cheetah since cheetah render needs locals() i use getCallerInfo() to get the locals() and send to
    Message 1 of 1 , Mar 2, 2009
    • 0 Attachment
      This is my first attempt at memcaching html page using cheetah 
      since cheetah render needs locals() i use getCallerInfo() to get the locals() and send to memcached
      let me know if it is possible to better do this
      notice getCallerInfo

      utils.py
      @log_time_func
      def renderpage(key, htmlfile, deleteafter=3600):
          from globaldb import mc
          try:page = mc.get(key)
          except:
              page=None
              clogger.info('except error mc.get '+ key)
          if not page:
              clogger.info(key+ ' rendering cheetah page')
              terms = getCallerInfo(1)
              #print terms
              page = str(web.render(htmlfile, asTemplate=True, terms=terms))
              try:mc.set(key, page, deleteafter)
              except:
                  clogger.info('except error mc.set '+ key)
          return page

      @log_time_func
      @memcachethis
      def mcrenderpage(key, htmlfile, deleteafter=3600):
          terms = getCallerInfo(2)
          #print terms
          return str(web.render(htmlfile, asTemplate=True, terms=terms))

      def getCallerInfo(decorators=0):
          '''returns locals of caller using frame.optional pass number of decorators\nFrom Dig deep into python internals http://www.devx.com/opensource/Article/31593/1954'''
          f = sys._getframe(2+decorators)
          args = inspect.getargvalues(f)
          return args[3]

      Usage
              key=facebookstuff.APP_NAME+'newstart'+str(uid)
              return utils.renderpage(key, 'pick.html')

      --
      Bidegg worlds best auction site
      http://bidegg.com
    Your message has been successfully submitted and would be delivered to recipients shortly.