[Twisted-web] Why not "remember" the clientHandle at the start of rendering?

Mike C. Fletcher mcfletch at rogers.com
Thu Sep 15 16:59:23 MDT 2005

When rendering a LivePage, we have a method render_liveglue which, as a 
hidden side-effect, creates a client handle in self.clientFactory (then 
promptly forgets about it, making it difficult to reference).  Thing is, 
having that clientHandle available throughout the rendering process 
would be quite convenient, so why not create it in the renderHTTP method 
and remember it there for use by anything that's wanting access to it?

    def renderHTTP(self, ctx):
        """Override to store the client-handle in the main page context"""
        handle = self.clientFactory.newClientHandle(
            self, self.refreshInterval,self.targetTimeoutCount
        ctx.remember( handle, IClientHandle )
        return super( LivePage, self ).renderHTTP( ctx )
    def render_liveglue(self, ctx, data):
        """Override to use already-created client handle (from 
        if not self.cacheable:
            handle = IClientHandle( ctx )
            handleId = "'", handle.handleId, "'"
            handleId = 'null'
        return [
                "var nevow_clientHandleId = ", handleId ,";"],

Noticed this as I was implementing the new handler implementation posted 
about a little while ago (it now works, incidentally, with a few bumps 
and twists).

Have fun,

  Mike C. Fletcher
  Designer, VR Plumber, Coder

More information about the Twisted-web mailing list