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 1 year 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

As a note, pipx supports this metadata declaration too so it seems pretty reasonable to use.

zanieb avatar Oct 12 '24 15:10 zanieb

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.

stale[bot] avatar Apr 26 '25 04:04 stale[bot]