Является ли Django (особенно Django Rest Framework) действительно синхронным?

Я знаю некоторые понятия о том, что Django (DRF) является синхронным и у него есть несколько рабочих, но я мало что знаю об этом.

Я попытался проверить это и создал это представление по адресу http://localhost:8000/my-view/:

def my_view(request):
    # Simulate some time-consuming task
    time.sleep(10)
    return HttpResponse("Response after 10 seconds")

Я открыл 7 терминалов и выполнил одну и ту же команду на каждом из них в течение 1-2 секунд (почти одновременно):

curl http://localhost:8000/my-view/ -H 'Content-Type: application/json'

--> и в результате в каждом терминале я получил ответ через 10-12 секунд.

Вот вопрос, если Django синхронный, то почему выполнение этих запросов по одному не заняло 70 секунд?

Единственное объяснение, которое я могу придумать, - это то, что он использует многопоточность.

Django является синхронным (за исключением когда это не так), но у него нет понятия "некоторые рабочие". Сервер приложений, на котором запущено приложение Django, может иметь понятие о рабочих.

Сервер разработки по умолчанию runserver действительно является многопоточным.

Запустите с python manage.py runserver --nothreading --noreload для однопроцессного, однопоточного сервера разработки.

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