httpcore
httpcore copied to clipboard
Consider inline script metadadata (PEP723) for benchmark scripts.
ref: https://github.com/encode/httpcore/pull/965#discussion_r1795321878
File formats:
scripts/bench/server.py
# /// script
# requires-python = ">=3.8"
# dependencies = [
# "uvicorn",
# ]
# ///
import asyncio
import uvicorn
PORT = 1234
RESP = b"a" * 2000
SLEEP = 0.01
...
scripts/bench/client.py
# /// script
# requires-python = ">=3.8"
# dependencies = [
# "httpcore",
# "aiohttp",
# "matplotlib",
# "pyinstrument",
# "urllib3",
# ]
# ///
import asyncio
import os
import sys
import time
from concurrent.futures import ThreadPoolExecutor
from contextlib import contextmanager
from typing import Any, Callable, Coroutine, Iterator, List
import aiohttp
import matplotlib.pyplot as plt # type: ignore[import-untyped]
import pyinstrument
import urllib3
from matplotlib.axes import Axes # type: ignore[import-untyped]
import httpcore
PORT = 1234
URL = f"http://localhost:{PORT}/req"
REPEATS = 10
REQUESTS = 500
CONCURRENCY = 20
POOL_LIMIT = 100
PROFILE = False
os.environ["HTTPCORE_PREFER_ANYIO"] = "0"
...
Run scripts:
server
$ uv run scripts/bench/server.py
client
$ uv run scripts/bench/client.py