Asyncio — полезная библиотека. Но разобраться с ней не так‑то просто. Документации по большей части недостаточно. Хочется примеров. Хочется подробных объяснений. Последние несколько выходных я потратил на эксперименты с этой библиотекой. Во время чего в Pocket осели довольно интересные ссылки, которыми я хочу поделиться.

  1. Exploring Python 3’s Asyncio by Example

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

  1. Fast scraping in Python with asyncio

Описание небольшого примера скрипта, проходящего по страничкам и вынимающего magnet‑ссылку на Torrent из тела страницы. Статья также довольно старая. Включил я её в список из‑за бонусного трека — с рассказом о том, как не убить асинхронными запросами сервер. Хотя я бы использовал возможности aiohttp по ограничению количества запросов.

  1. Wrapping Subprocesses in Asyncio

В этой статье рассматривается довольно интересный и необычный кейс для asyncio: выстраивается обработка стандартного вывода подпроцесса. О таком использовании asyncio я бы даже не подумал. Однако у автора получился довольно интересный код.

  1. A Web Crawler With Asyncio Coroutines by A. Jesse Jiryu Davis and Guido van Rossum

Подробный разбор того, как на Python, используя asyncio, написать «выкачивалку интернета». На мой взгляд, в этой статье слишком много воды и отступлений (к примеру, на то, чтобы разобрать, как работают генераторы). Вообще, эта статья — не самое лучшее объяснение, как работать с asyncio. Оставлена в списке исключительно из‑за автора.

  1. Making 1 million requests with python‑aiohttp by Paweł Miech

Автор этой статьи написал свой микро‑бенчмарк для aiohttp. И ему удалось выжать скорости в 111 111 запросов в минуту на абсолютно бесполезной задаче. Круто. Но не в этом достоинство статьи. Автор довольно подробно объясняет, как пользоваться aiohttp и какие подводные камни есть.

  1. Python asyncio cheatsheet

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

  1. I don’t understand Python’s Asyncio by Armin Ronacher

В этой статье Армин жалуется на сложность и многообразие концепций asyncio. В этом есть здравое зерно. Хотя мне кажется, большая часть сложности возникает из‑за того, что ещё не выработались нормальные подходы к использованию библиотеки.

  1. AsyncIO for the Working Python Developer by Yeray Diaz

Ещё один учебник по asyncio. В примерах используется новый синтаксис. Все примеры довольно подробно объяснены.

  1. Asyncio Coroutine Patterns: Beyond await by Yeray Diaz

Ещё одна статья того же автора. Эта ориентирована на более опытных разработчиков. В ней рассказывается о нескольких паттернах использования asyncio: рекурсивных корутинах, «запусти и забудь» (автор использует термин fire and forget, что является отсылкой к неуправляемым реактивным снарядам) и некоторых других.

Bonus: Asyncio: An Introduction by Mike Driscoll

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