def subprocess_based_service(cmd: List[str],
service_url: str,
log_file: TextIO) -> WebDriver:
check_event_loop()
closers = []
try:
if log_file is os.devnull:
log_file = DEVNULL
process = await asyncio.create_subprocess_exec(
*cmd,
stdout=log_file,
stderr=log_file,
)
closers.append(partial(stop_process, process))
session = ClientSession()
closers.append(session.close)
count = 0
while True:
try:
await tasked(session.request(
url=service_url + '/status',
method='GET'
))
break
except:
# TODO: make this better
count += 1
if count > 30:
raise Exception('not starting?')
await asyncio.sleep(0.5)
return WebDriver(
Connection(session, service_url),
closers,
)
except:
for closer in reversed(closers):
await closer()
raise
评论列表
文章目录