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 и какие подводные камни есть.

#6 Python asyncio cheatsheet

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

#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

Ещё один учебник. Вдруг не хватило тех, что я перечислил выше.



c