Skip to content

Consider inline script metadadata (PEP723) for benchmark scripts. #968

@T-256

Description

@T-256

ref: #965 (comment)

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    wontfixThis will not be worked on

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions