from twisted.internet import defer
from twisted.web import resource, server
+from twisted.python import log
class DeferredResource(resource.Resource):
def render(self, request):
def finish(x):
- if request._disconnected:
+ if request.channel is None: # disconnected
return
if x is not None:
request.write(x)
request.finish()
def finish_error(fail):
- if request._disconnected:
+ if request.channel is None: # disconnected
return
request.setResponseCode(500) # won't do anything if already written to
request.write('---ERROR---')
request.finish()
- fail.printTraceback()
+ log.err(fail, "Error in DeferredResource handler:")
defer.maybeDeferred(resource.Resource.render, self, request).addCallbacks(finish, finish_error)
return server.NOT_DONE_YET