18.5. asyncio – Асинхронный ввод/вывод, цикл событий, корутины и задачи
Новое в версии 3.4.
Исходный код: Lib/asyncio/
Этот модуль предоставляет инфраструктуру для написания однопоточного конкурентного кода с использованием корутин, мультиплексирования доступа к вводу/выводу через сокеты и другие ресурсы, запуска сетевых клиентов и серверов, а также других связанных примитивов. Ниже приведён более подробный список содержимого пакета:
подключаемый цикл событий с различными системно-зависимыми реализациями;
транспорт и протокол абстракции (похожие на те, что в Twisted);
конкретная поддержка TCP, UDP, SSL, каналов подпроцессов, отложенных вызовов и других (некоторые могут зависеть от системы);
класс
Future, который имитирует класс в модулеconcurrent.futures, но адаптирован для использования с циклом событий;корутины и задачи на основе
yield from(PEP 380), чтобы помочь писать конкурентный код последовательным образом;поддержка отмены для
Futures и корутин;примитивы синхронизации для использования между корутинами в одном потоке, имитирующие те, что в модуле
threading;интерфейс для передачи работы в пул потоков на случаи, когда совершенно необходимо использовать библиотеку, которая выполняет блокирующие вызовы ввода/вывода.
Асинхронное программирование сложнее классического «последовательного» программирования: смотрите страницу Разработка с asyncio, где перечислены типичные ловушки и объясняется, как их избежать. Включите режим отладки во время разработки, чтобы обнаруживать типичные проблемы.
Содержание:
- 18.5.1. Базовый цикл событий
- 18.5.1.1. Запуск цикла событий
- 18.5.1.2. Вызовы
- 18.5.1.3. Отложенные вызовы
- 18.5.1.4. Future
- 18.5.1.5. Задачи
- 18.5.1.6. Создание соединений
- 18.5.1.7. Создание прослушивающих соединений
- 18.5.1.8. Наблюдение за файловыми дескрипторами
- 18.5.1.9. Низкоуровневые операции с сокетами
- 18.5.1.10. Разрешение имени хоста
- 18.5.1.11. Подключение каналов
- 18.5.1.12. Сигналы UNIX
- 18.5.1.13. Исполнитель
- 18.5.1.14. API обработки ошибок
- 18.5.1.15. Режим отладки
- 18.5.1.16. Сервер
- 18.5.1.17. Handle
- 18.5.1.18. Примеры циклов событий
- 18.5.2. Циклы событий
- 18.5.3. Задачи и корутины
- 18.5.4. Транспорты и протоколы (API на основе колбэков)
- 18.5.5. Потоки данных (API на основе корутин)
- 18.5.6. Подпроцесс
- 18.5.7. Примитивы синхронизации
- 18.5.8. Очереди
- 18.5.9. Разработка с asyncio
- 18.5.9.1. Режим отладки asyncio
- 18.5.9.2. Отмена
- 18.5.9.3. Конкурентность и многопоточность
- 18.5.9.4. Корректная обработка блокирующих функций
- 18.5.9.5. Журналирование
- 18.5.9.6. Обнаружение объектов корутин, никогда не запланированных
- 18.5.9.7. Обнаружение исключений, которые никогда не были обработаны
- 18.5.9.8. Правильное связывание корутин
- 18.5.9.9. Уничтожение ожидающей задачи
- 18.5.9.10. Закрытие транспортов и циклов событий