[Twisted-web] Set request headers in rend.Page

Donovan Preston dp at ulaluma.com
Mon May 31 19:18:48 MDT 2004

On May 31, 2004, at 9:03 PM, Mary Gardiner wrote:

> On Tue, Jun 01, 2004, Mary Gardiner wrote:
>> Is there some point where I can add new headers to the request in a
>> Page itself? I haven't tested thoroughly, but it seems to me that the
>> HTTP headers have already been transmitted by the time render_ and
>> data_ methods are called.
> Looking at the implementation of rend.Page.renderHTTP makes me suspect
> that the way to do this is by making a beforeRender(self, request)
> method. Is this right?
> And if so, beforeRender looks like it's meant to be synchronous, and
> unfortunately my "check for new data" method needs to wait on a 
> Deferred
> to be called back.

That's probably an oversight; beforeRender and afterRender should 
support deferreds. Until that works though, you should override 
renderHTTP and return a deferred. Do this:

def renderHTTP(self, request):
     d = doSomethingDeferred()
     return d.addCallback(self.myCallback, request)

def myCallback(self, result, request):
	# Do whatever
	return rend.Page.renderHTTP(self, request)

rend.Page.renderHTTP returns a deferred which fires when the page is 
done rendering.


More information about the Twisted-web mailing list