[New-bugs-announce] [issue28287] Refactor subprocess.Popen to let a subclass handle IO asynchronously

Martin Richard report at bugs.python.org
Tue Sep 27 10:26:43 EDT 2016

New submission from Martin Richard:


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):

This patch only targets the unix implementation.

Thanks for your feedback.

files: popen_execute_child_refactoring.patch
keywords: patch
messages: 277517
nosy: martius
priority: normal
severity: normal
status: open
title: Refactor subprocess.Popen to let a subclass handle IO asynchronously
type: enhancement
versions: Python 3.6
Added file: http://bugs.python.org/file44844/popen_execute_child_refactoring.patch

Python tracker <report at bugs.python.org>

More information about the New-bugs-announce mailing list