[Twisted-web] problem with livepage-completion-notification-3 branche

Donovan Preston dp at ulaluma.com
Tue Jun 7 11:22:28 MDT 2005


On Jun 6, 2005, at 7:52 PM, Siegmund Fuehringer wrote:

> hi!
>
> livepage doesn't work, when i return a LivePage instance from
> a childFactory.
>
> eg:
> class Test( livepage.LivePage ):
> ...
> class Root( rend.Page ):
>     def childFactory( self, ctx, name ):
>     return Test( )   <---- doesn't work
>
>     child_muh = Test( )  <---- works
>
>
> it works in nevow trunk though.

Yes. This is correct. This gives the developer the correct amount of  
control over the lifetime of all ClientHandle instances associated  
with a LivePage.

If you want to build your LivePage in a childFactory method, just  
build it and cache it somewhere (self, for example) that will live  
for the appropriate lifetime for your application (which may be the  
entire lifetime of the application). Then, return the same instance  
out of this cache the next time it is requested. In this way, all  
LivePage requests go through the same LivePage instance, and thus  
through the same clientHandleFactory, and thus the correct  
ClientHandle instances can be located.

This allows you to do things like have one LivePage per person, using  
guard, or share the same LivePage between everybody, by always  
returning the same instance for the same URL.

Donovan




More information about the Twisted-web mailing list