Skip to content

Commit fa4e05f

Browse files
Move setup
1 parent 5b14cad commit fa4e05f

File tree

1 file changed

+22
-20
lines changed

1 file changed

+22
-20
lines changed

pyperformance/data-files/benchmarks/bm_fastapi/run_benchmark.py

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -43,26 +43,14 @@ async def get_item(item_id: int):
4343
}
4444

4545

46-
def bench_fastapi(loops):
47-
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
48-
s.bind((HOST, 0))
49-
s.listen(1)
50-
port = s.getsockname()[1]
51-
52-
config = uvicorn.Config(app, host=HOST, port=port, log_level="error")
53-
server = uvicorn.Server(config)
54-
46+
def bench_fastapi(loops, url):
5547
async def run_benchmark():
56-
server_task = asyncio.create_task(server.serve())
57-
while not server.started:
58-
await asyncio.sleep(0.01)
59-
6048
async with httpx.AsyncClient() as client:
6149
t0 = pyperf.perf_counter()
6250

6351
for i in range(loops):
6452
tasks = [
65-
client.get(f"http://{HOST}:{port}/items/{i}")
53+
client.get(f"{url}/items/{i}")
6654
for _ in range(CONCURRENCY)
6755
]
6856
responses = await asyncio.gather(*tasks)
@@ -72,16 +60,30 @@ async def run_benchmark():
7260
assert data["id"] == i
7361
assert "tags" in data
7462

75-
elapsed = pyperf.perf_counter() - t0
76-
77-
server.should_exit = True
78-
await server_task
79-
return elapsed
63+
return pyperf.perf_counter() - t0
8064

8165
return asyncio.run(run_benchmark())
8266

8367

8468
if __name__ == "__main__":
69+
import threading
70+
71+
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
72+
s.bind((HOST, 0))
73+
s.listen(1)
74+
port = s.getsockname()[1]
75+
76+
config = uvicorn.Config(app, host=HOST, port=port, log_level="error")
77+
server = uvicorn.Server(config)
78+
79+
server_thread = threading.Thread(target=server.run, daemon=True)
80+
server_thread.start()
81+
82+
while not server.started:
83+
pass
84+
85+
url = f"http://{HOST}:{port}"
86+
8587
runner = pyperf.Runner()
8688
runner.metadata['description'] = "Test the performance of HTTP requests with FastAPI"
87-
runner.bench_time_func("fastapi_http", bench_fastapi)
89+
runner.bench_time_func("fastapi_http", bench_fastapi, url)

0 commit comments

Comments
 (0)