[Twisted-web] renderer returning an errored deferred makes the response hang

Drew Perttula drewp at bigasterisk.com
Thu Dec 20 01:28:00 EST 2007


This page prints an error to the console, but the page never terminates. 
Rendering 'bar' behaves how I would expect-- an error page is shown in 
the browser.

How can I cause error pages to display when any renderer errors (or even 
replace that renderer with a local error message)? Having my site hang 
is awkward for debugging.



import sys
from twisted.internet.defer import Deferred
from twisted.internet import reactor
from twisted.python import log
from nevow.appserver import NevowSite
from nevow import rend, loaders, tags as T
import nevow

class P(rend.Page):
     docFactory = loaders.stan(T.body[T.directive('foo')])
     def render_foo(self, ctx, data):
         d = Deferred()
         def e(result):
             raise ValueError
         d.addCallback(e)
         d.callback(5)
         return d

     def render_bar(self, ctx, data):
         raise ValueError

print nevow.__file__, nevow.__version__
log.startLogging(sys.stdout)
reactor.listenTCP(8006, NevowSite(P()))
reactor.run()



More information about the Twisted-web mailing list