FastAPI vs Django- не может объяснить результаты бенчмарка "hello world"
I was wanted to benchmark FastAPI(0.68.1) and Django(3.2.6) and compare the results of a simple "Hello World" applications. (Python 3.8.5)
Код для FastAPI (запускал его с помощью uvicorn):
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
Код для Django:
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world")
Я постоянно читал в Интернете, что FastAPI является асинхронным, и я ожидал, что FastAPI будет работать лучше, чем Django, поскольку он работает в один поток. Но я получил противоположные результаты.
В этом небольшом приложении Django превзошел FastAPI.
Я проверил это с помощью locust, породив 300 пользователей, пока каждый пользователь делал get-запросы. (хотя для разных параметров я получил похожие результаты, а Django показал себя даже лучше)
Код locustfile.py следующий:
from locust import HttpUser, task
class QuickstartUser(HttpUser):
@task
def hello_world(self):
for i in range(1):
print("sending reqeust")
self.client.get("/")
Прилагаю результаты
Django (port 8000) FastApi (port 3636)
Может ли кто-нибудь объяснить эти результаты? Я что-то не так сделал в своем бенчмарке?
Большое спасибо, буду признателен за рекомендации!