Hi Graham, Thanks for the reply. In my case, it's the other way round. I need to check if the amount of data sent is equal to the file size i want to send. However, the question is - when do i check this? Currently, i am unable to call any cleanup code before exit.
Regards, -vishal. On Aug 25, 11:44 am, Graham Dumpleton <[EMAIL PROTECTED]> wrote: > On Aug 25, 4:26 pm, Vishal <[EMAIL PROTECTED]> wrote: > > > > > Hi, > > > Thanks for the replies. In my case, the cgi is sending a large file > > to the client. In case the the stop button is pressed on the browser > > to cancel the download, i want to do some cleanup action. It's all one- > > way transfer in this case, so i can't expect the client to send > > anything to me. I read somewhere that apache sends the SIGTERM signal > > to a cgi when the client disconnects. However, my cgi is not getting > > the signal - is there a way to have the cgi catch and handle the > > SIGTERM? > > > I tried using the signal module > > > --- > > def sigtermHandler(signum, frame): > > # do some cleanup > > > signal.signal(signal.SIGTERM, sigtermHandler) > > > --- > > > But even this doesn't work. > > Have you considered simply checking to see if the amount of POST > content read matches the inbound Content-Length specified in the CGI > environment. If your processing of POST content finds less than what > was meant to be sent, then likely that the client browser aborted > request before all content could be sent. > > Graham > > > Regards, > > > -vishal. > > On Aug 25, 2:58 am, "Gabriel Genellina" <[EMAIL PROTECTED]> > > wrote: > > > > En Sun, 24 Aug 2008 17:51:36 -0300, Wojtek Walczak <[EMAIL PROTECTED]> > > > escribió: > > > > > On Sun, 24 Aug 2008 17:21:52 -0300, Gabriel Genellina wrote: > > > >>> I am writing a CGI to serve files to the caller. I was wondering if > > > >>> there is any way to tell in my CGI if the client browser is still > > > >>> connected. If it is not, i want to execute some special code before > > > >>> exiting. > > > > >>> Is there any way to do this? Any help on this is appreciated :) > > > > >> I don't think so. A CGI script runs once per request, and exits. The > > > >> server may find that client disconnected, but that may happen after > > > >> the script finished. > > > > > I am not a web developer, but I think that the only way is to > > > > set a timeout on server side. You can't be sure that the client > > > > disconnected, but you can stop CGI script if there's no > > > > action on client side for too long. > > > > Which kind of client action? Every link clicked or form submitted > > > generates a different request that triggers a CGI script; the script > > > starts, reads its parameters, do its task, and exits. There is no "long > > > running process" in CGI - the whole "world" must be recreated on each > > > request (a total waste of resources, sure). > > > > If processing takes so much time, it's better to assign it a "ticket" - > > > the user may come back later and see if its "ticket" has been finished, > > > or the system may send an email telling him. > > > > -- > > > Gabriel Genellina > > -- http://mail.python.org/mailman/listinfo/python-list