Новости МирТесен
Фреймворк Django совместим с асинхронным Python
index 21-апр, 20:02 КриптовалютыВ прошлом году был опубликован Django 3.0, и сразу в обществе программистов возникли споры касательного того, будет ли новая версия совместима с асинхронностью. Но стоит разобраться, что это значит для того или иного программиста?
Django поддерживает асинхронный Python, но не поддерживаются асинхронные представления наряду с промежуточным программным обеспечением. Все данные недоработки будут исправлены уже в ближайшем будущем.
В соответствии с документами Django:
Отличается ограниченной поддержкой разных частей асинхронной экосистемы, таким образом есть возможность сразу применить ASGI, а также это касается поддержки асинхронной безопасности.
Нужно сказать, что не каждый python разработчик до конца понимают, что представляет собой асинхронность (в связке с Django). Есть пользователи, которые ранее просто работали с Python в исходном его состоянии, так что нужно все более детально разобрать.
Что представляет собой асинхронный код?
В сравнении с Java или иными мультипоточными языками Python является однопоточным языком. То есть это говорит о том, что в определенный момент времени выполняет исключительно одну единственную задачу, но не может выполнять сразу несколько.
Что касается Django, то это веб-фреймворк, который был создан на основе Python, и он тоже не асинхронный. То есть при выполнении, как одной, так и нескольких задач требует немало времени, и при этом часто наблюдаются зависания представления. И в большинстве случаев это влечет за собой сложности в работе.
Если пытаться моделировать ситуацию блокировки в представлении с определенным временем сна, то можно увидеть, что представление тормозит на некоторое время, и только после этого продолжает движение.
Фреймворк Django без созданной внутри системы очередей по факту не должен использоваться для работы с вводом-выводом, и это действительно является поводом задуматься над тем, как решит проблему. Многие Python разработчики применяют специальный модуль asyncio, для того чтобы создать асинхронный код и в дальнейшем использовать его в работе.
Может ли быть Django асинхронным?
Технически прийти к этому невозможно, но имеется проверенный метод обхода. И для многих разработчиков это выход из положения, а также дополнительные возможности. Стоит сказать, что в свое время Инстаграм масштабировался именно так, а теперь это одна из самых крупных примеров интеграции Django.
Выход из положения – библиотека Celery
Многие программисты нашли решение данной проблемы, и используют библиотеку, которая направлена на использование в реальном времени, и дополнительно имеется функция планирования, так что можно реализовать и необходимые асинхронные функции.
С чего стоит начинать?
Для начала стоит изучить непосредственно документы библиотеки. Написаны они грамотно и качественно.