Сам Django является синхронным.
каждый HTTP-запрос будет обрабатываться полностью синхронно.
Однако у вас есть расширения, такие как django-channel (https://github.com/django/channels), которые являются асинхронными ипредназначены для веб-сокетов и т. д.
Это немного упрощено: но синхронное программирование - это если вы пишете код, который обрабатывает один HTTP-запрос от начала и до конца и выполняется в потоке или в процессе иесли один процесс / один поток обрабатывает только один запрос за раз.
С python, в частности с asyncio или с витой, можно написать код такой, что один процесс / поток может обрабатывать несколько запросов. Всякий раз, когда один запрос ожидает получения новых данных в сети или отправки части данных, он может обработать другой запрос, пока этот другой запрос не будет ожидать готовности сети.
Django не используетtwisted or asyncio.
Новые веб-приложения веб-серверов, однако, не только обрабатывают запросы HTTP, но также могут использовать веб-сокеты. Модуль каналов django предназначен для работы с веб-сокетами. Он реализован с помощью asyncio, который позволяет обрабатывать множество веб-сокетов только одним процессом. он будет взаимодействовать с синхронными частями django через сообщения (например, redis)
Добавление: как указал @Sayse, django 3.0 будет поддерживать асинхронный код. Однако: операции ORM все еще будут синхронными, только если я понимаю. Они потерпят неудачу в цикле асинхронных событий с исключением SynchronousOnlyOperation. Так что, вероятно, большинство реальных представлений django потерпит неудачу, так как одной из причин django является использование ORM для доступа к базе данных .sections