New submission from Martin Richard: 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. ---------- 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 <rep...@bugs.python.org> <http://bugs.python.org/issue28287> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com