By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,404 Members | 1,074 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 443,404 IT Pros & Developers. It's quick & easy.

pexpect problems

P: n/a
I am trying to essentially fork a rsync process from my python script
and I am having some issues with the forking part. My program basically
checks to see if I need to transfer a file and if it does, it calls the
transferItem() function below:

def transferItem(filelist):
hostname, passwd, transdir, filepath = filelist
command = "nice -n +19 %s --partial --bwlimit=\"%d\" \"%s\" %s:%s"
% (COMMAND_TO_CHECK, BANDWIDTH_LIMIT, filepath, hostname, transdir)
p = pexpect.spawn(command)
ret = p.expect(["(yes/no)", "Password:"])
if ret == 0:
p.expect(pexpect.EOF, timeout=999)
print 'problem transferring file'

Now this seems to partially work (it transfers the file) but I have a
few issues I'm hoping someone can help me with. First there is the
timeout issue. Without the timeout=999 parameter, the default timeout
is 30 seconds. I'd rather not have any timeout because the files I need
to transfer can be quite large and may take several days in some cases.
I tried p.close(wait=False) but that creates a defunct process and
doesn't seem to transfer any of the file. I can also say p.interact()
which won't timeout on me but it also doesn't fork into the background.
I thought the best solution would be to use the p.interact() and fork
the process but I can't seem to get that working. Anyone have any ideas
or suggestions that might help me?

Also just as a background in case it helps, I am currently writing a
pickled object (List of list) to a file using a web frontend (using
django) and then I have a monitor script which first checks if it
should transfer a file (based on how many transfers are currently
running) and then opens the pickled object and pop's off the first item
and sends that as input to the above function which I'm hoping will
start the rsync and then keep on chugging. I'd really appreciate any
help anyone could offer.

Nov 24 '06 #1
Share this question for a faster answer!
Share on Google+

This discussion thread is closed

Replies have been disabled for this discussion.