Блог

Django для всего!

Сен 21, 2021

Начиная с версии 3 Django, появилась возможность использовать асинхронный режим при работе с ядром.

На протяжении многих лет WSGI (Web Server Gateway Interface, интерфейс шлюза веб-сервера) служил простым универсальным сопряжением между приложениями Python и веб-серверами. По своему устройству серверы WSGI являются синхронными. Сервер блокирует каждый запрос до тех пор, пока не будет завершена операция ввода-вывода. То есть решение «проблемы 10 тысяч соединений» может оказаться непростой задачей!

Django – очень мощный инструмент для создания систем любого типа в очень короткие сроки. К сожалению, его синхронный характер накладывает ограничения на использование некоторых современных веб-технологий, таких как WebSockets или функции HTTP/2.

Здесь нам на помощь приходит ASGI (Asynchronous Standard Gateway Interface, стандартный асинхронный интерфейс шлюза). Фактически, ASGI является надмножеством WSGI и может вызывать доступные к вызову объекты WSGI. ASGI поддерживает вебсокеты и долговременные HTTP-соединения. Его также можно использовать для продолжительного HTTP-опроса и для событий HTTP SSE (Server-Sent Events), позволяющих выполнять однонаправленные обновления от сервера к клиенту.

Чтобы сделать возможным использование Django совместно с WebSockets, создали «Channels 2», представляющие собой новый уровень обработки с использованием вебсокетов и фоновых задач. Однако данное средство не входит в ядро Django. Для его использования необходимо выполнить дополнительную установку и настройку. Вот почему встроенная поддержка асинхронных функций решает проблему интеграции с вебсокетом.

Переход на асинхронный режим занимает некоторое время. Сообщается, что текущий выпуск (3.0) изначально поддерживает ASGI, а также некоторые функции безопасности асинхронного программирования. Поскольку задача большая, требуется повторная реализация многих компонентов (таких как ORM, обработчик запросов, средство визуализации шаблонов и т.д.) для их работы в асинхронном режиме, который, как ожидается, появится в следующих выпусках. Как только это будет сделано, в мире появится ещё более мощный и надёжный асинхронный веб-фреймворк, который продолжит предоставлять все преимущества быстрых и надёжных систем любого типа.

Новое в блоге

Первый курс на платформе GRSE TalentLab: Как мы обучали Angular с нуля

В июле 2024 года завершился первый онлайн-курс на базе нашей новой образовательной платформы - “GRSE TalentLab”. Курс был посвящен основам технологии Angular. Для удобства он был разделен на две части: подготовительную и основную. Подготовительный курс Цель...

Разработка через прототипирование

Разработка через прототипирование помогает команде разработчиков исключить недопонимание на всех уровнях, задействуя прототипы на каждом из них в процессе эволюции проекта.

Современный подход к подготовке технической документации

Мир информационных технологий находится в постоянном развитии. Вместе с ним совершенствуются системы по созданию и поддержке технической документации. Предлагаем краткое знакомство с возможностями современных систем в данной сфере.