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.

Reply via email to