Что почитать о asyncio. 9 полезных ссылок
Опубликовано 20 October 2017 в Python
Asyncio — полезная библиотека. Но разобраться с ней не так-то просто. Документации по большей части недостаточно. Хочется примеров. Хочется подробных объяснений. Последние несколько выходных я потратил на эксперименты с этой библиотекой. Во время чего в Pocket осели довольно интересные ссылки, которыми я хочу поделиться.
#1 Exploring Python 3’s Asyncio by Example
Короткое введение в asyncio и aiohttp на нескольких небольших примерах. Примеры сделаны максимально простыми. Используется синтаксис с декораторами — статья написана довольно давно. Как отмечает автор, эта статья показывает лишь верхушку айсберга.
#2 Fast scraping in python with asyncio
Описание небольшого примера скрипта, проходящего по страничкам и вынимающего magnet-ссылку на Torrent из тела страницы. Статья также довольно старая. Включил я её в список из-за бонусного трека: с рассказом о том как не убить асинхронными запросами сервер. Хотя я бы использовал возможности aiohttp по ограничению количества запросов.
#3 Wrapping Subprocesses in Asyncio
В этой статье рассматривается довольно интересный и необычный кейс для asyncio: выстраивается обработка стандартного вывода подпроцесса. О таком использовании asyncio я бы даже не подумал. Однако, у автора получился довольно интересный код.
#4 A Web Crawler With asyncio Coroutines by A. Jesse Jiryu Davis and Guido van Rossum
Подробный разбор того, как на Python используя asyncio написать «выкачивалку интернета». На мой взгляд, в этой статье слишком много воды и отступлений (к примеру, на то, чтобы разобрать как работают генераторы). Вообще, эта статья не самое лучшее объяснение как работать с asyncio. Оставлена в списке исключительно из-за автора.
#5 Making 1 million requests with python-aiohttp by Paweł Miech
Автор этой статьи написал свой микро-бенчмарк для aiohttp. И ему удалось выжать скорости в 111 111 запросов в минуту на абсолютно бесполезной задаче. Круто. Но не в этом достоинство статьи. Автор довольно подробно объясняет как пользоваться aiohttp и какие подводные камни есть.
Куски кода с примерами того, как использовать те или иные аспекты библиотеки. Пожалуй, поиски решения своих задач стоит начинать именно отсюда.
#7 I don't understand Python's Asyncio by Armin Ronacher
В этой статье Армин жалуется на сложность и многообразие концепций asyncio. В этом есть здравое зерно. Хотя мне кажется, большая часть сложности возникает из-за того, что ещё не выработались нормальные подходы использованию библиотеки.
#8 AsyncIO for the Working Python Developer by Yeray Diaz
Ещё один учебник asyncio. В примерах используется новый синтаксис. Все примеры довольно подробно объяснены.
#9 Asyncio Coroutine Patterns: Beyond await by Yeray Diaz
Ещё одна статья того же автора. Эта ориентирована на более опытных разработчиков. В ней рассказывается о нескольких паттернах использования asyncio: рекурсивных корутинах, «запусти и забудь» (автор использует термин fire and forget, что является отсылкой к неуправляемым реактивным снарядам) и некоторые другие.
Bonus: Asyncio: An Introduction by Mike Driscoll
Ещё один учебник. Вдруг не хватило тех, что я перечислил выше.
Возник вопрос? Мне всегда можно написать в Twitter: avkorablev