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) Django Results FastApi (port 3636) FastApi Results

Может ли кто-нибудь объяснить эти результаты? Я что-то не так сделал в своем бенчмарке?

Большое спасибо, буду признателен за рекомендации!

Вернуться на верх