Re: Newbie question : client connection lost

Sebastien PASTOR <[email protected]>
Newsgroups gmane.comp.python.twisted.web
Message-ID <20100511134635.GB7699@seblaptop>
It looks to me that this is what i am doin ... I really might be
doing something wrong here but can t see what.
The only difference with the livejournal's code is that i am trying to
run a blocking code so i am doing a threads.deferToThread instead of doing a 
callLater. 
To test the connection lost, client side i am disabling the wifi while
the server is blocking (sleeping). At the end of the blocking code:
request.write() and finish() are done as if the connection was available
and my ErrCallBack is not called.

I hope i am clear... in attachment the code i am using 


Thanks for your time

Seb






On Tue, May 11, 2010 at 12:54:40PM +0100, Phil Mayers wrote:
> On 11/05/10 13:23, Sebastien PASTOR wrote:
> > Thanks Phil,
> >
> > I managed to be notified when the connection is cleanly closed by the
> > client (ie: browser is stop or close window).
> > But i could not handle non-clean connection closure (ie: when wifi  goes
> > down client side for instance). request.finish() does not event raise
> > any error. ...
> > I am a bit stuck here. .. any ideas ?
> 
> I'm not sure I follow.
> 
> Have a look at this to make sure you're using it properly:
> 
> http://jcalderone.livejournal.com/50890.html
> 
> _______________________________________________
> Twisted-web mailing list
> [email protected]
> http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
delay.py (text/x-python, 1.1 KB)
from twisted.web import server, resource
from twisted.internet import reactor,threads
from twisted.python.util import println
from twisted.web.server import NOT_DONE_YET

class DelayedResource(resource.Resource):
    	isLeaf = True

	def _responseFinished(self,d):
		print "in response Finished ! " ,d

	def _delayedRender(self, request):
		from time import sleep
        	request.write("<html><body>Sorry to keep you waiting.</body></html>")
		request.finish()

	def error(self,err):
		print "err " , err

	def blockingError(self,err):
		print "In blocking error"

	def blockingProcess (self,request):
	 	from time import sleep
		print "Blocking ..."
		sleep(30)
		print "About to write"
		request.write("In blocking handler")
		request.finish()	
		print "wrote"


	def render_GET(self, request):
		d2=threads.deferToThread(self.blockingProcess,request)
		d2.addErrback(self.blockingError)
		d = request.notifyFinish()
		d.addErrback(self.error)
		return server.NOT_DONE_YET

site = server.Site(DelayedResource())
reactor.listenTCP(8080,site,interface="192.168.0.10")
reactor.run()
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.