hello, everybody: I have a request and the response need similar twisted.web.server.NOT_DONE_YET function. does twisted.web2 have similar twisted.web.server.NOT_DONE_YET usage? thanks.
hi, i resolved the problem.
use twisted.web2.stream.ProducerStream when getPage function is finished, then write data to the stream.
class Test(resource.Resource): def render(self, request): remoteurl = 'http://www.sf.org/' from twisted.web2.stream import ProducerStream responseStream = ProducerStream() getPage(remoteurl, timeout=60).addCallback(self.reqok, request, responseStream).addErrback(self.reqfailure, request, responseStream) return http.Response(200, {'content-type': contenttype} ,responseStream)
def reqok(self, result, request, responseStream): responseStream.write(result) responseStream.finish()
def reqfailure(self, failure, request, responseStream): responseStream.write('Bad Request') responseStream.finish()<twisted-web%40twistedmatrix.com?Subject=%5BTwisted-web%5D%20web2%20and%20database%20handling&In-Reply-To=45802378.6000605%40ag-projects.com>
but when get remoteurl cotent need longtime, my program ofter raise..
2008-06-21 21:02:19+0800 [-] Unhandled Error Traceback (most recent call last): File "/usr/local/lib/python2.5/site-packages/twisted/application/app.py", line 433, in startReactor self.config, oldstdout, oldstderr, self.profiler, reactor) File "/usr/local/lib/python2.5/site-packages/twisted/application/app.py", line 336, in runReactorWithLogging reactor.run() File "/usr/local/lib/python2.5/site-packages/twisted/internet/base.py", line 1114, in run self.mainLoop() File "/usr/local/lib/python2.5/site-packages/twisted/internet/base.py", line 1126, in mainLoop self.doIteration(t) --- <exception caught here> --- File "/usr/local/lib/python2.5/site-packages/twisted/internet/selectreactor.py", line 104, in doSelect [], timeout) exceptions.ValueError: filedescriptor out of range in select()