diff options
Diffstat (limited to 'examples/subprocess_attach_read_pipe.py')
-rw-r--r-- | examples/subprocess_attach_read_pipe.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/examples/subprocess_attach_read_pipe.py b/examples/subprocess_attach_read_pipe.py index d8a6242..a2f9bb5 100644 --- a/examples/subprocess_attach_read_pipe.py +++ b/examples/subprocess_attach_read_pipe.py @@ -1,7 +1,8 @@ #!/usr/bin/env python3 """Example showing how to attach a read pipe to a subprocess.""" -import asyncio +import trollius as asyncio import os, sys +from trollius import From code = """ import os, sys @@ -17,16 +18,19 @@ def task(): rfd, wfd = os.pipe() args = [sys.executable, '-c', code, str(wfd)] - pipe = open(rfd, 'rb', 0) + pipe = os.fdopen(rfd, 'rb', 0) reader = asyncio.StreamReader(loop=loop) protocol = asyncio.StreamReaderProtocol(reader, loop=loop) - transport, _ = yield from loop.connect_read_pipe(lambda: protocol, pipe) + transport, _ = yield From(loop.connect_read_pipe(lambda: protocol, pipe)) - proc = yield from asyncio.create_subprocess_exec(*args, pass_fds={wfd}) - yield from proc.wait() + kwds = {} + if sys.version_info >= (3, 2): + kwds['pass_fds'] = (wfd,) + proc = yield From(asyncio.create_subprocess_exec(*args, **kwds)) + yield From(proc.wait()) os.close(wfd) - data = yield from reader.read() + data = yield From(reader.read()) print("read = %r" % data.decode()) loop.run_until_complete(task()) |