Fastapi Python -Code -Ausführungsgeschwindigkeit, die durch den Einsatz mit Uvicorn gegen Gunicorn betroffen istPython

Python-Programme
Anonymous
 Fastapi Python -Code -Ausführungsgeschwindigkeit, die durch den Einsatz mit Uvicorn gegen Gunicorn betroffen ist

Post by Anonymous »

Ich habe eine Fastapi -App geschrieben. Und jetzt denke ich darüber nach, es einzusetzen, aber ich scheine seltsame unerwartete Leistungsprobleme zu bekommen, die davon abhängen, ob ich Uvicorn gegen Gunicorn verwende. Insbesondere der gesamte Code (sogar die Standardbibliothek reiner Python -Code) scheint langsamer zu werden, wenn ich Gunicorn verwende. Für Performance -Debugging habe ich eine kleine App geschrieben, die dies demonstriert: < /p>

Code: Select all

import asyncio, time
from fastapi import FastAPI, Path
from datetime import datetime

app = FastAPI()

@app.get("/delay/{delay1}/{delay2}")
async def get_delay(
delay1: float = Path(..., title="Nonblocking time taken to respond"),
delay2: float = Path(..., title="Blocking time taken to respond"),
):
total_start_time = datetime.now()
times = []
for i in range(100):
start_time = datetime.now()
await asyncio.sleep(delay1)
time.sleep(delay2)
times.append(str(datetime.now()-start_time))
return {"delays":[delay1,delay2],"total_time_taken":str(datetime.now()-total_start_time),"times":times}
< /code>
Ausführen der Fastapi -Appi mit: < /p>
gunicorn api.performance_test:app -b localhost:8001 -k uvicorn.workers.UvicornWorker --workers 1
Der Resonok -Körper von A Get to http: // localhost: 8001/delay/0.0/0.0 ist konsequent so etwas wie:

Code: Select all

{
"delays": [
0.0,
0.0
],
"total_time_taken": "0:00:00.057946",
"times": [
"0:00:00.000323",
...smilar values omitted for brevity...
"0:00:00.000274"
]
}
< /code>
jedoch mit: < /p>
uvicorn api.performance_test:app --port 8001
< /code>
Ich erhalte rund umsahe Zeiten wie diese < /p>
{
"delays": [
0.0,
0.0
],
"total_time_taken": "0:00:00.002630",
"times": [
"0:00:00.000037",
...snip...
"0:00:00.000020"
]
}
Der Unterschied wird noch stärker, wenn ich auf das Asyncio -Sleep (Delay1) Anweisung wartet. Python 3.8.2 unter OS X 11.2.3 mit einem Intel i7 -Prozessor.

Code: Select all

fastapi==0.65.1
gunicorn==20.1.0
uvicorn==0.13.4

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post