Глава 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 являются: экспериментировать, пробовать и получать удовольствие!