This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author martius
Recipients martius
Date 2016-09-27.14:26:42
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1474986403.83.0.165864194914.issue28287@psf.upfronthosting.co.za>
In-reply-to
Content
Hi,

Currently, subprocess.Popen performs blocking IO in its constructor (at least on Unix): it reads on a pipe in order to detect outcome of the pre-exec and exec phase in the new child. There is no way yet to modify this behavior as this blocking call is part of a long Popen._execute_child() method.

This is a problem in asyncio (asyncio.subprocess_exec and asyncio.subprocess_shell).

I would like to submit a patch which breaks Popen.__init__() and Popen._execute_child() in several methods so it becomes possible to avoid blocking calls (read on pipe and waitpid) by overriding a few private methods without duplicating too much code. The goal is to use it in asyncio, as described in this pull request (which currently monkey-patches Popen):
https://github.com/python/asyncio/pull/428

This patch only targets the unix implementation.

Thanks for your feedback.
History
Date User Action Args
2016-09-27 14:26:43martiussetrecipients: + martius
2016-09-27 14:26:43martiussetmessageid: <1474986403.83.0.165864194914.issue28287@psf.upfronthosting.co.za>
2016-09-27 14:26:43martiuslinkissue28287 messages
2016-09-27 14:26:43martiuscreate