I was having a problem rendering a template three times in a row. 
This just started happening now that I’m running the latest and greatest TurboGears out of svn. 
I found a work-around, but don’t understand why or what it works around. 
 
Attached is my server log, which includes some debugging statements I added to _freshen_template and _freshen_bases. I’ve inserted blank lines after the startup and between page loads. I’ve also modified the error handler stack trace to print out all local variables too. 
 
First, I load the main index page template (that doesn’t do anything special, just displays some static html with kid).
That template extends my master.kid, which extends the standard sitetemplate and my own handy ‘util.kid’ template. But master.kid extends the sitetemplate via <?python import sitetemplate ?> and then passes the module sitetemplate instead of ‘sitetemplate.kid’ to extends, like extends=”sitetemplate, ‘util.kid’”. 
 
When I remove sitetemplate from the extension list of master.kid, everything works ok! 
Is sitetemplate necessary? Why isn’t it reloading properly the second time it’s reloaded (or third time it’s displayed)? 
 
When sitetemplate is listed in the extends of my master.kid, the problem occurs on the third load:
 
The first time it loads the page, everything works fine. (Fresh server, no reloading.)
 
The second time I load the same page, it reloads the index, util and sitetemplate. 
However, I don’t know why it’s doing that reloading, because I didn’t change them (is it because I’m in development mode?). But at least the templates work properly this time after reloading. 
 
The third time I load the same page, it again tries to reload the same templates, but apparently something goes wrong with reloading sitetemplate, because sys.modules['turbogears.fastdata.templates.sitetemplate'] is not defined, when it should have been ‘/home/bdds/turbogears/turbogears/fastdata/templates/sitetemplate.kid'. That causes a crash. 
 
Another thing I’m wondering about (that doesn’t seem to be causing any errors, but mystifies me) is why are my master.kid and util.kid templates showing up in anonymous modules called 'kid.util.template_0xCE66A227L', instead of the expected “alive.alive.templates.master” and “alive.alive.templates.util”? Is it supposed to be like that? The __file__ names of these modules are correct, so it works ok, but I don’t understand why the module names have random hex numbers in them. 
 
        -Don
 
[starting server]
 
2005/12/28 17:31:45 CONFIG INFO Server parameters:
2005/12/28 17:31:45 CONFIG INFO   server.environment: development
2005/12/28 17:31:45 CONFIG INFO   server.logToScreen: True
2005/12/28 17:31:45 CONFIG INFO   server.logFile: 
2005/12/28 17:31:45 CONFIG INFO   server.protocolVersion: HTTP/1.0
2005/12/28 17:31:45 CONFIG INFO   server.socketHost: 
2005/12/28 17:31:45 CONFIG INFO   server.socketPort: 9090
2005/12/28 17:31:45 CONFIG INFO   server.socketFile: 
2005/12/28 17:31:45 CONFIG INFO   server.reverseDNS: False
2005/12/28 17:31:45 CONFIG INFO   server.socketQueueSize: 5
2005/12/28 17:31:45 CONFIG INFO   server.threadPool: 0
2005/12/28 17:31:45 HTTP INFO Serving HTTP on http://localhost:9090/
 
[first load of index: compiles templates for first time]
 
2005/12/28 17:31:49 HTTP INFO 216.12.200.59 - GET /index HTTP/1.1
2005-12-28 17:31:49,264 turbogears.kidsupport DEBUG Recompiling template for turbogears.fastdata.templates.sitetemplate
2005-12-28 17:31:49,273 turbogears.kidsupport DEBUG Recompiling template for alive.templates.index
2005-12-28 17:31:49,340 turbogears.kidsupport DEBUG Applying template alive.templates.index
216.12.200.59 - - [2005/12/28 17:31:49] "GET /index HTTP/1.1" 200 927
 
[second load of index: reloads templates for unknown reason, but works]
 
2005/12/28 17:31:57 HTTP INFO 216.12.200.59 - GET /index HTTP/1.1
('FOO: _freshen_template', 'package', 'alive.templates', 'basename', 'index', 'tfile', '/home/bdds/server/alive/alive/templates/index.kid', 'classname', 'alive.templates.index')
('FOO: _freshen_bases', 'bases', (<class 'kid.util.template_0xCE66A227L.Template'>, <class 'kid.BaseTemplate'>), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'kid.util.template_0xCE66A227L.Template'>, 'base.__bases__', (<class 'turbogears.fastdata.templates.sitetemplate.Template'>, <class 'kid.util.template_0x6C2D42FL.Template'>, <class 'kid.BaseTemplate'>))
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0xCE66A227L')
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0xCE66A227L', '__file__', '/home/bdds/server/alive/alive/templates/master.kid')
('FOO: _freshen_bases', 'bases', (<class 'turbogears.fastdata.templates.sitetemplate.Template'>, <class 'kid.util.template_0x6C2D42FL.Template'>, <class 'kid.BaseTemplate'>), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'turbogears.fastdata.templates.sitetemplate.Template'>, 'base.__bases__', (<class 'kid.BaseTemplate'>,))
('FOO: _freshen_bases for', 'modname', 'turbogears.fastdata.templates.sitetemplate')
('FOO: _freshen_bases for', 'modname', 'turbogears.fastdata.templates.sitetemplate', '__file__', '/home/bdds/turbogears/turbogears/fastdata/templates/sitetemplate.kid')
('FOO: _freshen_bases', 'bases', (<class 'kid.BaseTemplate'>,), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'kid.BaseTemplate'>, 'base.__bases__', (<type 'object'>,))
('FOO: _freshen_bases for stat', '/home/bdds/turbogears/turbogears/fastdata/templates/sitetemplate.kid')
('FOO: _freshen_bases for', 'base', <class 'kid.util.template_0x6C2D42FL.Template'>, 'base.__bases__', (<class 'kid.BaseTemplate'>,))
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0x6C2D42FL')
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0x6C2D42FL', '__file__', '/home/bdds/server/alive/alive/templates/util.kid')
('FOO: _freshen_bases', 'bases', (<class 'kid.BaseTemplate'>,), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'kid.BaseTemplate'>, 'base.__bases__', (<type 'object'>,))
('FOO: _freshen_bases for stat', '/home/bdds/server/alive/alive/templates/util.kid')
('FOO: _freshen_bases for', 'base', <class 'kid.BaseTemplate'>, 'base.__bases__', (<type 'object'>,))
('FOO: _freshen_bases for', 'base', <class 'kid.BaseTemplate'>, 'base.__bases__', (<type 'object'>,))
2005-12-28 17:31:57,353 turbogears.kidsupport DEBUG Recompiling template for alive.templates.index
2005-12-28 17:31:57,374 turbogears.kidsupport DEBUG Applying template alive.templates.index
216.12.200.59 - - [2005/12/28 17:31:57] "GET /index HTTP/1.1" 200 927
 
[third load of index: reloads templates again for unknown reason, but fails because 'turbogears.fastdata.templates.sitetemplate’ is no longer defined in sys.modules]
 
2005/12/28 17:32:02 HTTP INFO 216.12.200.59 - GET /index HTTP/1.1
('FOO: _freshen_template', 'package', 'alive.templates', 'basename', 'index', 'tfile', '/home/bdds/server/alive/alive/templates/index.kid', 'classname', 'alive.templates.index')
('FOO: _freshen_bases', 'bases', (<class 'kid.util.template_0xCE66A227L.Template'>, <class 'kid.BaseTemplate'>), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'kid.util.template_0xCE66A227L.Template'>, 'base.__bases__', (<class 'turbogears.fastdata.templates.sitetemplate.Template'>, <class 'kid.util.template_0x6C2D42FL.Template'>, <class 'kid.BaseTemplate'>))
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0xCE66A227L')
('FOO: _freshen_bases for', 'modname', 'kid.util.template_0xCE66A227L', '__file__', '/home/bdds/server/alive/alive/templates/master.kid')
('FOO: _freshen_bases', 'bases', (<class 'turbogears.fastdata.templates.sitetemplate.Template'>, <class 'kid.util.template_0x6C2D42FL.Template'>, <class 'kid.BaseTemplate'>), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'turbogears.fastdata.templates.sitetemplate.Template'>, 'base.__bases__', (<class 'kid.BaseTemplate'>,))
('FOO: _freshen_bases for', 'modname', 'turbogears.fastdata.templates.sitetemplate')
('FOO: _freshen_bases for: sys.modules MISSING modname', 'turbogears.fastdata.templates.sitetemplate')
('FOO: _freshen_bases', 'bases', (<class 'kid.BaseTemplate'>,), 'saved_mtime', 1135282337)
('FOO: _freshen_bases for', 'base', <class 'kid.BaseTemplate'>, 'base.__bases__', (<type 'object'>,))
2005/12/28 17:32:02  INFO Traceback (most recent call last):
  File "/usr/local/python24/lib/python2.4/site-packages/CherryPy-2.1.0-py2.4.egg/cherrypy/_cphttptools.py", line 271, in run
    info: (none)
    local: self = <cherrypy._cphttptools.Request object at 0xbebaea8c>
    main()
  File "/usr/local/python24/lib/python2.4/site-packages/CherryPy-2.1.0-py2.4.egg/cherrypy/_cphttptools.py", line 503, in main
    info: (none)
    local: path = '/index'
    local: args = []
    local: page_handler = <bound method Root.index of <alive.controllers.Root object at 0xbecbfccc>>
    local: virtual_path = []
    local: object_path = ['root', 'index']
    body = page_handler(*args, **cherrypy.request.paramMap)
  File "/home/bdds/turbogears/turbogears/controllers.py", line 242, in newfunc
    info: (none)
    local: func = <function index at 0xbecbe0d4>
    local: content_type = 'text/html'
    local: format = None
    local: tg_format = None
    local: args = ()
    local: html = 'alive.templates.index'
    local: kw = {}
    local: underscore = None
    local: accept_format = 'text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5...
    local: self = <alive.controllers.Root object at 0xbecbfccc>
    local: allow_json = None
    html, *args, **kw)
  File "/home/bdds/turbogears/turbogears/database.py", line 175, in run_with_transaction
    info: (none)
    local: args = (<alive.controllers.Root object at 0xbecbfccc>, <function index at 0xbecbe0d4>, None, 'alive.templat...
    local: kw = {}
    local: func = <function _execute_func at 0xbecddbc4>
    retval = func(*args, **kw)
  File "/home/bdds/turbogears/turbogears/controllers.py", line 262, in _execute_func
    info: (none)
    local: tg_format = None
    local: args = ()
    local: html = 'alive.templates.index'
    local: kw = {}
    local: func = <function index at 0xbecbe0d4>
    local: output = {'tg_flash': None, 'tg_js_bodytop': [], 'tg_css': [], 'tg_js_head': [], 'tg_js_bodybottom': []}
    local: self = <alive.controllers.Root object at 0xbecbfccc>
    return _process_output(tg_format, output, html)
  File "/home/bdds/turbogears/turbogears/controllers.py", line 64, in _process_output
    info: (none)
    local: tg_format = 'html'
    local: l = bodybottom
    local: js = {head: [], bodytop: [], bodybottom: []}
    local: template = 'alive.templates.index'
    local: output = {'tg_flash': None, 'tg_js_bodytop': [], 'tg_css': [], 'tg_js_head': [], 'tg_js_bodybottom': []}
    local: css = []
    output = view.render(output, tg_format, template=template)
  File "/home/bdds/turbogears/turbogears/view.py", line 56, in render
    info: (none)
    local: engine = <turbogears.kidsupport.KidSupport instance at 0xbedb4a0c>
    local: fragment = False
    local: info = {'tg_flash': None, 'tg_js_bodytop': [], 'tg_css': [], 'tg_js_head': [], 'tg_js_bodybottom': []}
    local: template = 'alive.templates.index'
    local: format = 'html'
    return engine.render(info, format, fragment, template)
  File "/home/bdds/turbogears/turbogears/kidsupport.py", line 139, in render
    info: (none)
    local: fragment = False
    local: info = {'tg_flash': None, 'tg_js_bodytop': [], 'tg_css': [], 'tg_js_head': [], 'tg_js_bodybottom': []}
    local: self = <turbogears.kidsupport.KidSupport instance at 0xbedb4a0c>
    local: template = 'alive.templates.index'
    local: format = 'html'
    tclass = self.load_template(template)
  File "/home/bdds/turbogears/turbogears/kidsupport.py", line 113, in load_template
    info: (none)
    local: package = 'alive.templates'
    local: basename = 'index'
    local: tfile = '/home/bdds/server/alive/alive/templates/index.kid'
    local: classname = 'alive.templates.index'
    local: precompiled = False
    local: loadingSite = False
    local: divider = 15
    local: self = <turbogears.kidsupport.KidSupport instance at 0xbedb4a0c>
    mod = _freshen_template(package, basename, tfile, classname)
  File "/home/bdds/turbogears/turbogears/kidsupport.py", line 56, in _freshen_template
    info: (none)
    local: saved_mtime = 1135282337
    local: package = 'alive.templates'
    local: basename = 'index'
    local: tfile = '/home/bdds/server/alive/alive/templates/index.kid'
    local: classname = 'alive.templates.index'
    local: bases = (<class 'kid.util.template_0xCE66A227L.Template'>, <class 'kid.BaseTemplate'>)
    local: _freshen_bases = <function _freshen_bases at 0xbeba0b1c>
    local: mtime = 1135282337
    if _freshen_bases(bases, saved_mtime) or saved_mtime < mtime:
  File "/home/bdds/turbogears/turbogears/kidsupport.py", line 35, in _freshen_bases
    info: (none)
    local: modname = 'kid.util.template_0xCE66A227L'
    local: saved_mtime = 1135282337
    local: bases = (<class 'kid.util.template_0xCE66A227L.Template'>, <class 'kid.BaseTemplate'>)
    local: _freshen_bases = <function _freshen_bases at 0xbeba0b1c>
    local: base = <class 'kid.util.template_0xCE66A227L.Template'>
    local: needs_reload = False
    if _freshen_bases(base.__bases__, saved_mtime):
  File "/home/bdds/turbogears/turbogears/kidsupport.py", line 39, in _freshen_bases
    info: (none)
    local: modname = 'turbogears.fastdata.templates.sitetemplate'
    local: saved_mtime = 1135282337
    local: bases = (<class 'turbogears.fastdata.templates.sitetemplate.Template'>, <class 'kid.util.template_0x6C2D42FL...
    local: _freshen_bases = <function _freshen_bases at 0xbeba0b1c>
    local: base = <class 'turbogears.fastdata.templates.sitetemplate.Template'>
    local: needs_reload = False
    print ("FOO: _freshen_bases for stat", sys.modules[modname].__file__)
KeyError: 'turbogears.fastdata.templates.sitetemplate'
 
216.12.200.59 - - [2005/12/28 17:32:02] "GET /index HTTP/1.1" 500 6528

 

Reply via email to