There isn't really a way. You can read past discussions on this in the
group archives about points where closure may be detected. One such
discussion is:

https://groups.google.com/d/msg/modwsgi/jr2ayp0xesk/QtINxMi_KUAJ

Graham

On 19 July 2012 22:55, lvqier <[email protected]> wrote:
> I am confused with the following code (test.py), which is a wsgi
> application:
>
>> #!/usr/bin/env python
>>
>> from subprocess import Popen, PIPE
>> import os
>>
>> cwd = os.path.dirname(os.path.abspath(__file__))
>> exe = os.path.join(cwd, 'wait.py')
>>
>> def application(environ, start_response):
>>     process_args = ['python', exe, cwd, '100000']
>>     process = Popen(process_args, stdout = PIPE, stderr = PIPE)
>>     process.wait()
>>     start_response('200 OK', [('Content-Type', 'text/plain'),])
>>     return ['finished']
>
>
> where wait.py is:
>
>>  #!/usr/bin/env python
>>
>> import pyinotify
>>
>> class iNotifyEventHandler(pyinotify.ProcessEvent):
>>     def process_IN_CLOSE_WRITE(self, event):
>>         fp = event.pathname
>>         print 'File created: %s' % fp
>>
>> def watch(folder):
>>     watch_manager = pyinotify.WatchManager()
>>     watch_manager.add_watch(folder,
>> pyinotify.EventsCodes.ALL_FLAGS['IN_CLOSE_WRITE'], rec = True, auto_add =
>> True)
>>     handler = iNotifyEventHandler()
>>     watch_inotify_inst = pyinotify.Notifier(watch_manager, handler)
>>     return watch_inotify_inst
>>
>> if __name__ == '__main__':
>>     import sys
>>     if len(sys.argv) != 3:
>>         print 'Usage: %s folder timeout' % sys.argv[0]
>>         exit(1)
>>     folder = sys.argv[1]
>>     timeout = int(sys.argv[2])
>>     notifier = watch(folder)
>>     notifier.process_events()
>>     if notifier.check_events(timeout = timeout):
>>         notifier.read_events()
>>         notifier.process_events()
>>
>
> There comes the problem:
>
> When web clients access the wsgi application, the wsgi forks wait.py as
> subprocess and wait it to be finished. But when the subprocess takes too
> long to return, the client may go away before the wsgi application became
> ready to response. In this situation, I want the subprocess to be terminated
> as soon as the client is missing. What should I do?
>
> If the wsgi application could catch a signal when the client is gone away, a
> signal could be sent to the subprocess indicating termination. But I have no
> idea which signal to be handled in the wsgi application.
>
> Appreciate for your help.
>
> --
> You received this message because you are subscribed to the Google Groups
> "modwsgi" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/modwsgi/-/ZE5FKEa3d0kJ.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to
> [email protected].
> For more options, visit this group at
> http://groups.google.com/group/modwsgi?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"modwsgi" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/modwsgi?hl=en.

Reply via email to