httpcore icon indicating copy to clipboard operation
httpcore copied to clipboard

Consider inline script metadadata (PEP723) for benchmark scripts.

Open T-256 opened this issue 4 months ago • 1 comments

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

T-256 avatar Oct 12 '24 12:10 T-256