Mercurial > code > home > repos > rdferry
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) |