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
As a note, pipx supports this metadata declaration too so it seems pretty reasonable to use.
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.