Hi folks --

I have a Python script running under Apache/mod_wsgi that needs to
reload Apache configs as part of its operation.  The script continues
to execute after the subprocess.Popen call.  The communicate() method
returns the correct text ("Reloading httpd: [  OK  ]"), and I get a
returncode of 0.  But the python script (Django) that calls Popen
never seems to complete (by returning an HTTP response.

Any other Popen call I've tried exits properly.  Here's some sample
code:

                args = ['sudo /etc/init.d/httpd reload']
                proc = subprocess.Popen(args, stdin=subprocess.PIPE,
stdout=subprocess.PIPE, stderr=subprocess.STDOUT, shell=True,
close_fds=True)
                (stdout_txt, stderr_txt) = proc.communicate("")
                proc.wait()
                logging.debug('%d %s<hr />%s' % (proc.returncode, stdout_txt,
stderr_txt))
                logging.debug('still executing')
                return HttpResponse('done')

The logging statements are output, but the script doesn't exit.  If
you substitute "sudo ls -l" or "sudo /etc/init.d/httpd configtest" for
"sudo /etc/init.d/httpd reload", the exits properly.

 Any idea what I might be doing wrong?

Thanks!
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to