comparison examples/_run_server_child.py @ 8:25538e3ee531

rename
author drewp@bigasterisk.com
date Sat, 16 Mar 2024 12:51:39 -0700
parents examples/run_server_make_request.py@d885fce5e4e7
children 52e1bb1532f2
comparison
equal deleted inserted replaced
7:d98cb018fad7 8:25538e3ee531
1 import asyncio
2 from dataclasses import dataclass
3 from pathlib import Path
4
5 import aiohttp
6
7
8 @dataclass
9 class RunHttpServerChildProcess:
10 server_path: Path
11
12 async def __aenter__(self):
13 self.subprocess = await asyncio.create_subprocess_exec(
14 'pdm', 'run', 'python', self.server_path)
15 self._session = await aiohttp.ClientSession().__aenter__()
16 return self
17
18 async def __aexit__(self, exc_type, exc, tb):
19 await self._session.close()
20 self.subprocess.terminate()
21 await self.subprocess.wait()
22
23 async def get(self, url: str) -> aiohttp.ClientResponse:
24 while True:
25 try:
26 return await self._session.get(url)
27 except aiohttp.ClientConnectorError:
28 await asyncio.sleep(0.05)