[Twisted-Python] twisted.web2 server timeout?

I have a newbie question. By the way, even though it is a brain-f**k, I love programming in this software. I just wish there was an easier/faster way to understand it. I got and read the twisted book, but unfortunately it does not have twisted web2 examples... Anyway, I have written a web server using web2 that takes an HTTP request and sends it off to another server to process it. If the other server were to crash, how can I make the http request timeout after 30 seconds and redirect to a timeout page? Following is my resource code. When the response is available, I take the response stream, write to it, and call finish(). class HTTPServer(resource.PostableResource): def __init__(self, cache): resource.Resource.__init__(self) self.cache = cache def _finished(self, result, httprequest, postdata): convq = self.cache['conversations'] s=stream.ProducerStream() self.cache['requests'][id(httprequest)] = (httprequest,postdata,s) if httprequest.args.has_key(CONVID): conversationid = httprequest.args[CONVID][0] try: convq[conversationid].put(httprequest) except: convq[conversationid] = Queue.Queue() convq[conversationid].put(httprequest) else: convq[ANY].put(httprequest) if log: method = httprequest.method raw_uri = urllib.unquote(httprequest.uri) print "%-4s" % method, print "%-6s" % 'CLIENT', print "%-4s" % raw_uri return http.Response(stream=s) def _failed(self, reason, httprequest, postdata): result = str(reason) result += str(httprequest.uri) + '\n' result += '\n'.join(postdata) + '\n' return http.Response(500, stream="An internal server error has occurred.") def http_POST(self, httprequest): postdata = [] d = stream.readStream(httprequest.stream, postdata.append) d.addCallbacks( self._finished, self._failed, callbackArgs=(httprequest, postdata,), errbackArgs=(httprequest, postdata,) ) # Catch any errors that occur in self._finished. d.addErrback(self._failed, httprequest, postdata) return d http_PUT = http_POST http_GET = http_POST ~Paul
participants (1)
-
Paul Perez