ref: #965 (comment)
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"
...
$ uv run scripts/bench/server.py
$ uv run scripts/bench/client.py
Pay now to fund the work behind this issue.
Get updates on progress being made.
Maintainer is rewarded once the issue is completed.
You're funding impactful open source efforts
You want to contribute to this effort
You want to get funding like this too