468,771 Members | 1,930 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,771 developers. It's quick & easy.

13 second delay using select() with Popen3()

hi all...

I wrote a seemingly simple function (below) to use Popen3() and select()
to run a program and capture its exit status, stdout output, and stderr
output.

It worked fine until the box was upgraded to Debian sarge.
Now the call to select() always takes about 13 seconds before returning
the first time.
The delay only occurs when the function is running within a CGI program
invoked by Apache (v2.2).
If I run the same thing from a shell in the same environment, there is
no delay.
The correct result is always returned; the only problem is the 13-second
delay.

The command passed as "cmd" runs a bash script which looks at some local
files and prints one line of output and then does "exit 0".
Python is v2.4.4 (can't use 2.5 because I am using Zope which doesn't
support it yet).

I would appreciate any suggestions or advice about whether I got the
select loop wrong somehow, or what else might be wrong. Thanks!!

Jonathan Mark
-------
import os, popen2, select

def execCommand(cmd, mergeErrors = False):
popen3 = popen2.Popen3(cmd, capturestderr = True)
popen3.tochild.close()

strOutput = ''
strErrors = ''
fdOutputFrom = popen3.fromchild.fileno()
fdlistFrom = [fdOutputFrom, popen3.childerr.fileno()]
while fdlistFrom:
fdlistReadable, fdlistWriteable, fdlistError = select.select(
fdlistFrom, [], fdlistFrom)
for fd in fdlistError:
raise AssertionError('file I/O error with child process')
for fd in fdlistReadable:
data = os.read(fd, 8192)
if data:
if mergeErrors or fd is fdOutputFrom:
strOutput += data
else:
strErrors += data
else:
fdlistFrom.remove(fd)
popen3.fromchild.close()
popen3.childerr.close()
return popen3.wait(), strOutput, strErrors
Dec 21 '06 #1
0 1381

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

2 posts views Thread by Rajarshi Guha | last post: by
4 posts views Thread by Chris Green | last post: by
1 post views Thread by Ruchika | last post: by
13 posts views Thread by Russell E. Owen | last post: by
2 posts views Thread by Jeffrey Barish | last post: by
4 posts views Thread by FAQ server | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by zhoujie | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.