summaryrefslogtreecommitdiffstats
path: root/Lib/asyncio
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-07-17 10:25:27 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-07-17 10:25:27 (GMT)
commitcc996b57890a251cef83101d5cfcbc58179cba5f (patch)
tree6e4192cd348196825f50ddc81dad99edbcd0902b /Lib/asyncio
parent38bf87c7f285b9ad03feea765ddad9f607876591 (diff)
downloadcpython-cc996b57890a251cef83101d5cfcbc58179cba5f.zip
cpython-cc996b57890a251cef83101d5cfcbc58179cba5f.tar.gz
cpython-cc996b57890a251cef83101d5cfcbc58179cba5f.tar.bz2
asyncio, tulip issue 190: Process.communicate() must ignore BrokenPipeError
If you want to handle the BrokenPipeError, you can easily reimplement communicate(). Add also a unit test to ensure that stdin.write() + stdin.drain() raises BrokenPipeError.
Diffstat (limited to 'Lib/asyncio')
-rw-r--r--Lib/asyncio/subprocess.py6
1 files changed, 5 insertions, 1 deletions
diff --git a/Lib/asyncio/subprocess.py b/Lib/asyncio/subprocess.py
index 12902f1..23d6b4d 100644
--- a/Lib/asyncio/subprocess.py
+++ b/Lib/asyncio/subprocess.py
@@ -143,7 +143,11 @@ class Process:
if self._loop.get_debug():
logger.debug('%r communicate: feed stdin (%s bytes)',
self, len(input))
- yield from self.stdin.drain()
+ try:
+ yield from self.stdin.drain()
+ except BrokenPipeError:
+ # ignore BrokenPipeError
+ pass
if self._loop.get_debug():
logger.debug('%r communicate: close stdin', self)