services.py 文件源码

python
阅读 22 收藏 0 点赞 0 评论 0

项目:arsenic 作者: HDE 项目源码 文件源码
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
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号