Глава 5. Заключительные соображения

Заключительные соображения

Когда в Python появились существенная новая функциональность появилась в Python, она оказалась новой для всех: даже несмотря на то, что я имею опыт работы с Python почти в два десятилетия, я обнаружил, что Asyncio существенно отличается от имеющихся у меня знаний, даже принимая во внимание то, что я уже работал с Twisted и Tornado в предыдущих проектах, и поэтому программирование на основе событий не было новым для меня. Я обнаружил, что API asyncio оказался гораздо более сложным, чем я ожидал. Частично это было вызвано отсутствием документации верхнего уровня.

Теперь, по прошествии определённого времени для изучения того как применять Asyncio в Python, я ощущаю себя с ним намного более комфортно и такой прогресс, видимо, будет также и у вас. За архитектурой этого API имеются отчётливые структуры и цель и, надеюсь, эта книга сделает для вас это изучение гораздо более простым, нежели это было для меня. Обладая неким базовым пониманием, я нахожу что достаточно просто писать новый код на основе asyncio без необходимости постоянно обращаться к документации: а это очень хороший знак и, естественно, это не так для всех прочих модулей стандартных библиотек.

Тем не менее, всё ещё имеются шероховатости.

Стандартная библиотека asyncio по- прежнему будет иметь большой, подробный API, так как она обслуживает как разработчиков инфраструктур, так и разработчиков приложений конечных пользователей. Это означает, что мы - выступая как разработчики конечного продукта - далжны будем узнать какие именно части имеющегося API применимы для нас, а какие нет. Со временем, по мере развития и возмужания экосистемы библиотек сторонних разработчиков для asyncio, мы, скорее всего, будем работать именно с API этих библиотек, вместо того чтобы работать с сырым API стандартной библиотеки asyncio. Хорошими примерами этого являются такие имеющиеся библиотеки как aiohttp и Sanic.

API asyncio сам по себе также продолжит улучшаться, по мере того как всё больше людей приобретут опыт работы с ним. Как уже упоминалось ранее в этой книге, в Python 3.7 появилось множество улучшений для asyncio, а а настоящее время ведутся работы по ещ1 более существенным улучшениям, например, Tasklocal storage {Прим. пер.: также см. PEP 550, PEP 555.}, аналог хранилища локальных потоков для потокового программирования, но вместо этого для контекстов asyncio Task.

Проходя этот путь нашлись и неожиданные открытия для меня: по счастливой случайности, так оказалось, что мне потребовалось (наконец!) изучать ZeroMQ примерно в то же самое время, когда писалась эта книга. И я обнаружил, что asyncio в сочетании с pyzmq превращает сетевое программирование в радость!

Наконец, моими рекомендациями для наилучшего изучения Asyncio являются: экспериментировать, пробовать и получать удовольствие!