subprocess.Popen instance hangs

Prasad, Ramit ramit.prasad at jpmorgan.com.dmarc.invalid
Thu Aug 29 14:49:47 EDT 2013


Tim Johnson
> using Python 2.7.1 on OS X 10.7.5
> 
> I'm managing a process of drush using an instance of subprocess.Popen
> 
> The process has a '--verbose' option. When that option is passed as
> part of the initializer `args' argument, the process will hang.
> 
> It should be no surprise as drush output with the --verbose option
> can be _extremely_ verbose, and I can do without it, but I would
> like to learn how to handle it. I've googled this topic, but my poor
> little brain is yet to sort out all of the content found.
> 
> ## my relevant code follows :
> p = subprocess.Popen(args,stderr=subprocess.STDOUT,stdout=subprocess.PIPE)
> ## wait() is 'forever' if '--verbose' used
> exit_status = p.wait()
> output = p.stdout.read()
> ## done
> 
> I 'suspect' that using a tempfile may be the solution, if so, I
> could use some examples.
> 
> thanks
> --
> Tim
> tim at tee jay forty nine dot com or akwebsoft dot com
> http://www.akwebsoft.com
> --


I think the documentation covers your issue. 

"""
Popen.wait()
    Wait for child process to terminate. Set and return returncode attribute.
    Warning: will deadlock when using stdout=PIPE and/or stderr=PIPE and the child 
    process generates enough output to a pipe such that it blocks waiting for the 
    OS pipe buffer to accept more data. Use [Popen.]communicate() to avoid that.
""" From http://docs.python.org/2/library/subprocess.html#subprocess.Popen.wait

Does switching to `p.communicate()` solve your problem?


~Ramit



This email is confidential and subject to important disclaimers and conditions including on offers for the purchase or sale of securities, accuracy and completeness of information, viruses, confidentiality, legal privilege, and legal entity disclaimers, available at http://www.jpmorgan.com/pages/disclosures/email.  



More information about the Python-list mailing list