proxy.py/benchmark
Abhinav Singh 2fa320d03f
Python 3.11 support (#1384)
* Changes for Python 3.11 support

* Updated README.md for versioning info

* Update `httpx==0.27.0` to avoid `cgi` deprecation warning from pytest on Python 3.11

* Make tests work for 3.11

* Declare support for 3.11

* Use 3.11-alpine for Docker images

* Preserve pylint version for `python_version <= 3.10`

* Preserve httpx version for <= 3.10

* `httpx` usage fix in tests for <=3.10

* Adjust pylint and pytest for >= 3.11

* Use 3.11.8, bad-option-value and httpx proxies fix

* tox for 3.11

* Fix for `TOXENV: py`

* -vv for pytest

* Downgrade to `pytest-asyncio==0.21.1`

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

* remove asyncio_mode=strict

* try with `pytest-cov==4.1.0` for 3.11

* bump coverage for 3.11

* Try `3.11` in GitHub workflow which installs >3.11.8 unavailable via pyenv yet

* Revert back to `-v`

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-04-13 13:22:25 +05:30
..
README.md Optimizations & Update Benchmark Results (#832) 2021-12-01 04:18:49 +05:30
_aiohttp.py Use `--local-executor` flag by default for Docker container (#880) 2021-12-19 12:48:05 +05:30
_blacksheep.py Update project test dependencies to ensure green workflow (#1371) 2024-04-11 13:04:10 +05:30
_proxy.py Pre `v2.4.0rc8` cleanups (#1053) 2022-01-24 11:36:51 +05:30
_starlette.py [isort] Lib modules (#1016) 2022-01-20 15:34:54 +05:30
_tornado.py [isort] Lib modules (#1016) 2022-01-20 15:34:54 +05:30
compare.sh Use `--local-executor` flag by default for Docker container (#880) 2021-12-19 12:48:05 +05:30
requirements.txt Python 3.11 support (#1384) 2024-04-13 13:22:25 +05:30

README.md

Benchmark

Table of Contents

TL;DR

NOTE: On Macbook Pro 2019 / 2.4 GHz 8-Core Intel Core i9 / 32 GB RAM

Server Throughput (request/sec) Num Workers Runner
blacksheep 46,564 10 uvicorn
starlette 44,102 10 uvicorn
proxy.py 39,232 10 -
aiohttp 6,615 1 -
tornado 3,301 1 -
  • On a single core, proxy.py yields ~9449 req/sec throughput.
  • Try it using --num-acceptors=1

Usage

 git clone https://github.com/abhinavsingh/proxy.py.git
 cd proxy.py
 pip install -r benchmark/requirements.txt
 ./benchmark/compare.sh > /tmp/compare.log 2>&1

Results

 cat /tmp/compare.log