diff --git a/bench.py b/bench.py new file mode 100644 index 0000000..c8bc227 --- /dev/null +++ b/bench.py @@ -0,0 +1,30 @@ +import aiohttp +import asyncio +from bs4 import BeautifulSoup +from urllib.parse import urljoin +import subprocess + +async def extract_links(url): + async with aiohttp.ClientSession() as session: + async with session.get(url) as response: + soup = BeautifulSoup(await response.text(), 'html.parser') + for link in soup.find_all('a'): + yield urljoin(url, link.get('href')) + +async def benchmark(url): + # This will still block, because subprocess.run is not async + subprocess.run(['hey', '-n', '100', '-c', '10', url]) + +url = 'http://zen.box:9999/http/' + +async def main(): + i = 1 + async for link in extract_links(url): + if i > 50: + break + await benchmark(link) + await benchmark(link.replace('/http/', '/')) + i += 1 + +# Python 3.7+ +asyncio.run(main())