Student0809's picture
Add files using upload-large-folder tool
7feac49 verified
# Copyright (c) Alibaba, Inc. and its affiliates.
import asyncio
import sys
from asyncio.subprocess import PIPE, STDOUT
async def run_and_get_log(*args, timeout=None):
process = await asyncio.create_subprocess_exec(*args, stdout=PIPE, stderr=STDOUT)
lines = []
while True:
try:
line = await asyncio.wait_for(process.stdout.readline(), timeout)
except asyncio.TimeoutError:
break
else:
if not line:
break
else:
lines.append(str(line))
return process, lines
def run_command_in_subprocess(*args, timeout):
if sys.platform == 'win32':
loop = asyncio.ProactorEventLoop()
asyncio.set_event_loop(loop)
else:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
process, lines = loop.run_until_complete(run_and_get_log(*args, timeout=timeout))
return (loop, process), lines
def close_loop(handler):
loop, process = handler
process.kill()
loop.close()