1 from __future__ import division
3 from twisted.internet import defer
4 from twisted.web import resource, server
5 from twisted.python import log
7 class DeferredResource(resource.Resource):
8 def render(self, request):
10 if request.channel is None: # disconnected
16 def finish_error(fail):
17 if request.channel is None: # disconnected
19 request.setResponseCode(500) # won't do anything if already written to
20 request.write('---ERROR---')
22 log.err(fail, "Error in DeferredResource handler:")
24 defer.maybeDeferred(resource.Resource.render, self, request).addCallbacks(finish, finish_error)
25 return server.NOT_DONE_YET