tools: change asyncio_process_wait_timeout to handle cases where process.stdout is None. close #56

This commit is contained in:
Yann Sionneau 2015-07-07 19:30:13 +02:00
parent 2d343dd95d
commit 0109821078
1 changed files with 8 additions and 7 deletions

View File

@ -91,13 +91,14 @@ def asyncio_process_wait_timeout(process, timeout):
# causes a futures.InvalidStateError inside asyncio if and when the
# process terminates after the timeout.
# Work around this problem.
end_time = time.monotonic() + timeout
r = True
while r:
r = yield from asyncio.wait_for(
process.stdout.read(1024),
timeout=end_time - time.monotonic())
@asyncio.coroutine
def process_wait_returncode_timeout():
while True:
if process.returncode is not None:
break
yield from asyncio.sleep(0.1)
yield from asyncio.wait_for(process_wait_returncode_timeout(),
timeout=timeout)
@asyncio.coroutine
def asyncio_process_wait(process):