On Feb 6, 5:26 am, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > Hello, > > I am trying to write a python cgi that calls a script over ssh, the > problem is the script takes a very long time to execute so Apache > makes the CGI time out and I never see any output. The script is set > to print a progress report to stdout every 3 seconds but I never see > any output until the child process is killed. > <snip> > > Does anybody know a way to make output show in real time?
Try this: <code> # test.py import os import sys import time def command(): for x in range(5): print x sys.stdout.flush() time.sleep(1) def main(): command = 'python -c "import test; test.command()"' print 'running: %s' % command output = os.popen(command, 'r', 1) while True: line = output.readline() if line == '': break sys.stdout.write(line) sys.stdout.flush() if __name__ == '__main__': main() </code> The problem is with using the file-like object returned by popen as an iterator. It will block until the child process is killed, so just iterate across it manually. Pete -- http://mail.python.org/mailman/listinfo/python-list