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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions