Низкая производительность Django + uvicorn

Я тестирую производительность Django asgi, используя два очень простых представления. Я запускаю gunicorn и uvicorn таким образом:

gunicorn core.wsgi --workers=1 --threads=1 --access-logfile=- core.wsgi:application
uvicorn --workers 1 core.asgi:application

Виды следующие:

def simple_sync_view(request):
    usernames = "Hello World"
    return JsonResponse({'message': usernames})


async def simple_async_view(request):
    usernames = "Hello World"
    return JsonResponse({'message': usernames})

В проекте не включены промежуточные модули. При тестировании с использованием:wrk -t10 -c100 -d10s http://127.0.0.1:8000/test/sync/ синхронный сервер всегда работает в несколько раз быстрее:

  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency    37.42ms    7.87ms 158.35ms   98.88%
    Req/Sec   271.54     38.28   303.00     79.60%
  26885 requests in 10.01s, 4.87MB read
Requests/sec:   2685.95
Transfer/sec:    498.40KB

сравнение с uvicorn:

  10 threads and 100 connections
  Thread Stats   Avg      Stdev     Max   +/- Stdev
    Latency   115.38ms   37.55ms 245.49ms   53.91%
    Req/Sec    88.65     41.14   200.00     74.63%
  8638 requests in 10.02s, 1.40MB read
Requests/sec:    862.49
Transfer/sec:    143.19KB

независимо от типа представления, sync или async. Поэтому мне интересно, это Django в режиме asgi такой медленный или что?

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