Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 638282)
Контекстум
Электро-2024

Twisted из первых рук. Событийное и асинхронное программирование на Python (4000,00 руб.)

0   0
Первый авторЗадка
АвторыУорнер
ИздательствоМ.: ДМК Пресс
Страниц340
ID794709
АннотацияЭта книга посвящена Twisted – событийно-ориентированному сетевому фреймворку на Python, в котором можно создавать уникальные проекты. В первой части рассматриваются особенности Twisted; на практических примерах показано, как его архитектура способствует тестированию, решает общие проблемы надежности, отладки и упрощает выявление причинно-следственных связей, присущих событийно-ориентированному программированию. Детально описываются приемы асинхронного программирования, подчеркивается важность отложенного вызова функций и сопрограмм. На примере использования двух популярных приложений, treq и klein, демонстрируются сложности, возникающие при реализации веб-API с Twisted, и способы их преодоления. Вторая часть книги посвящена конкретным проектам, использующим Twisted. В число примеров входят использование Twisted с Docker, применение Twisted в роли контейнера WSGI, организация обмена файлами и многое другое. Читатель должен иметь некоторый опыт работы с Python и понимать основы контейнеров и протоколов. Знакомство с Twisted и с проектами, описанными в книге, не требуется.
ISBN978-5-97060-795-4
УДК4.438
ББК32.973.22
Задка. Twisted из первых рук. Событийное и асинхронное программирование на Python / Уорнер; Задка .— Москва : ДМК Пресс, 2020 .— 340 с. — ISBN 978-5-97060-795-4 .— URL: https://rucont.ru/efd/794709 (дата обращения: 09.06.2024)

Предпросмотр (выдержки из произведения)

Twisted_из_первых_рук._Событийное_и_асинхронное_программирование_на_Python.pdf
УДК 004.438 ББК 32.973.22 З15 З15 Twisted из первых рук / пер. с анг. А. Н. Киселева. – М.: ДМК Пресс, 2020. – 338 с.: ил. Задка М., Уильямс М., Бенфилд К., Уорнер Б., Митчелл Д., Сэмюэл К., Тарди П. ISBN 978-5-97060-795-4 Эта книга посвящена Twisted – событийно-ориентированному сетевому фреймворку на Python, в котором можно создавать уникальные проекты. В первой части рассматриваются особенности Twisted; на практических примерах показано, как его архитектура способствует тестированию, решает общие проблемы надежности, отладки и упрощает выявление причинно-следственных связей, присущих событийно-ориентированному программированию. Детально описываются приемы асинхронного программирования, подчеркивается важность отложенного вызова функций и сопрограмм. На примере использования двух популярных приложений, treq и klein, демонстрируются сложности, возникающие при реализации веб-API с Twisted, и способы их преодоления. Вторая часть книги посвящена конкретным проектам, использующим Twisted. В число примеров входят использование Twisted с Docker, применение Twisted в роли контейнера WSGI, организация обмена файлами и многое другое. Читатель должен иметь некоторый опыт работы с Python и понимать основы контейнеров и протоколов. Знакомство с Twisted и с проектами, описанными в книге, не требуется. УДК 004.438 ББК 32.973.22 Authorized Russian translation of the English edition of Expert Twisted ISBN 978-1-48423741-0 © 2019 Moshe Zadka, Mark Williams, Cory Benfield, Brian Warner, Dustin Mitchell, Kevin Samuel, Pierre Tardy. This translation is published and sold by permission of Packt Publishing, which owns or controls all rights to publish and sell the same. Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. ISBN 978-1-4842-3741-0 (анг.) ISBN 978-5-97060-795-4 (рус.) © 2019 Moshe Zadka, Mark Williams, Cory Benfield, Brian Warner, Dustin Mitchell, Kevin Samuel, Pierre Tardy © Оформление, издание, перевод, ДМК Пресс, 2020
Стр.5
Содержание Об авторах ..........................................................................................................12 Благодарности ...................................................................................................14 Введение .............................................................................................................15 От издательства .................................................................................................16 Часть I. ОСНОВЫ ..............................................................................................17 Глава 1. Введение в событийно-ориентированное программирование с помощью Twisted .....................................................18 Примечание о версиях Python .............................................................................19 Событийно-ориентированное программирование – что это?..........................19 Многократные события ........................................................................................20 Мультиплексирование и демультиплексирование ............................................22 Мультиплексор select............................................................................................23 История, аналоги и назначение ......................................................................23 Сокеты и select ..................................................................................................24 События сокета – как, что и почему ................................................................25 Обработка событий ..........................................................................................26 Цикл обработки событий с select ....................................................................27 Управляемые событиями клиенты и серверы ................................................29 Неблокирующий ввод/вывод ...............................................................................31 Знаем, когда нужно остановиться ...................................................................31 Отслеживание состояния .................................................................................32 Наличие информации о состоянии усложняет программы ..........................35 Управление сложностью с помощью транспортов и протоколов .....................36 Реакторы: работа с транспортом .....................................................................37 Транспорты: работа с протоколами ....................................................................37 Игра в пинг-понг с протоколами и транспортами .........................................38 Клиенты и серверы со своими реализациями протоколов и транспортов ....42 Реакторы Twisted и протоколы с транспортами ............................................43 Преимущества событийно-ориентированного программирования ................44 Twisted и реальный мир .......................................................................................46 События и время ...................................................................................................50 Повторение событий с LoopingCall .................................................................53 Интерфейсы событий в zope.interface .................................................................55
Стр.7
Содержание  7 Управление потоком в событийно-ориентированных программах ................57 Управление потоком в Twisted с помощью производителей и потребителей .....................................................................................................58 Активные производители ................................................................................59 Потребители ......................................................................................................61 Пассивные производители ..............................................................................64 Итоги .....................................................................................................................64 Глава 2. Введение в асинхронное программирование с Twisted .........66 Обработчики событий и их композиция ............................................................66 Что такое асинхронное программирование? .....................................................69 Заполнители для будущих значений ...................................................................70 Асинхронная обработка исключений .................................................................72 Введение в Twisted Deferred .................................................................................76 Обычные обработчики .....................................................................................76 Ошибки и их обработчики ...............................................................................77 Композиция экземпляров Deferred .................................................................80 Генераторы и inlineCallbacks ...............................................................................83 yield ....................................................................................................................83 send ....................................................................................................................84 throw ..................................................................................................................86 Асинхронное программирование с inlineCallbacks .......................................87 Сопрограммы в Python .........................................................................................89 Сопрограммы с выражением yield from ..........................................................90 Сопрограммы async и await .............................................................................91 Ожидание завершения экземпляров Deferred ....................................................96 Преобразование сопрограмм в Deferred с помощью ensureDeferred ................97 Мультиплексирование объектов Deferred ...........................................................98 Тестирование объектов Deferred .......................................................................102 Итоги ...................................................................................................................105 Глава 3. Создание приложений с библиотеками treq и Klein ..............107 Насколько важную роль играют эти библиотеки? ............................................107 Агрегирование каналов ......................................................................................108 Введение в treq ....................................................................................................109 Введение в Klein ..................................................................................................112 Klein и Deferred ...............................................................................................113 Механизм шаблонов Plating в Klein ..............................................................115 Первая версия агрегатора каналов ....................................................................117 Разработка через тестирование с использованием Klein и treq ......................123 Выполнение тестов на устанавливаемом проекте .......................................123 Тестирование Klein с помощью StubTreq ......................................................126 Тестирование treq с помощью Klein ..............................................................133
Стр.8
8  Содержание Журналирование с использованием twisted.logger......................................136 Запуск приложений Twisted с помощью twist ..............................................141 Итоги ...................................................................................................................144 Часть II. ПРОЕКТЫ .........................................................................................146 Глава 4. Twisted в Docker ...............................................................................147 Введение в Docker ...............................................................................................147 Контейнеры .....................................................................................................147 Образы контейнеров ......................................................................................148 runc и containerd .............................................................................................149 Клиент .............................................................................................................149 Реестр ..............................................................................................................150 Сборка .............................................................................................................150 Многоступенчатая сборка ..............................................................................151 Python в Docker ...................................................................................................153 Варианты развертывания ..............................................................................153 В виртуальном окружении .............................................................................157 В формате Pex .................................................................................................159 Варианты сборки ............................................................................................160 Один большой образ .......................................................................................160 Копирование пакетов wheel между этапами ................................................161 Копирование окружения между этапами .....................................................161 Копирование файлов Pex между этапами .....................................................161 Автоматизация с использованием Dockerpy ................................................161 Twisted в Docker ..................................................................................................162 ENTRYPOINT и PID 1 .......................................................................................162 Пользовательские плагины ............................................................................162 NColony ............................................................................................................162 Итоги ...................................................................................................................165 Глава 5. Использование Twisted в роли сервера WSGI .........................166 Введение в WSGI .................................................................................................166 PEP ...................................................................................................................167 Простой пример ..............................................................................................168 Базовая реализация ........................................................................................170 Пример WebOb ................................................................................................172 Пример Pyramid ..............................................................................................173 Начало .................................................................................................................174 Сервер WSGI ....................................................................................................174 Поиск кода .......................................................................................................177 Путь по умолчанию ........................................................................................177 PYTHONPATH ..................................................................................................177
Стр.9
Содержание  9 setup.py ............................................................................................................177 Почему Twisted? ..............................................................................................178 Промышленная эксплуатация и разработка ................................................178 TLS ...................................................................................................................179 Индикация имени сервера .............................................................................180 Статические файлы ........................................................................................182 Модель ресурсов .............................................................................................182 Чисто статические ресурсы ............................................................................183 Комбинирование статических файлов с WSGI .............................................185 Встроенное планирование задач ...................................................................186 Каналы управления ........................................................................................189 Стратегии параллельного выполнения .............................................................191 Балансировка нагрузки ..................................................................................191 Открытие сокета в режиме совместного использования ............................192 Другие варианты ............................................................................................195 Динамическая конфигурация ............................................................................195 Приложение Pyramid с поддержкой A/B-тестирования ...............................195 Плагин для поддержки AMP ..........................................................................197 Управляющая программа ..............................................................................200 Итоги ...................................................................................................................201 Глава 6. Tahoe-LAFS: децентрализованная файловая система ...............................................................................................................202 Как работает Tahoe-LAFS ...................................................................................203 Архитектура системы .........................................................................................206 Как система Tahoe-LAFS использует Twisted ....................................................208 Часто встречающиеся проблемы .......................................................................208 Инструменты поддержки выполнения в режиме демона ...........................209 Внутренние интерфейсы FileNode ....................................................................210 Интеграция интерфейсных протоколов ...........................................................211 Веб-интерфейс ....................................................................................................212 Типы файлов, Content-Type, /named/ ............................................................214 Сохранение на диск ........................................................................................215 Заголовки Range..............................................................................................215 Преобразование ошибок на возвращающей стороне ..................................216 Отображение элементов пользовательского интерфейса: шаблоны Nevow ..............................................................................................217 Интерфейс FTP ....................................................................................................218 Интерфейс SFTP ..................................................................................................223 Обратная несовместимость Twisted API ...........................................................223 Итоги ...................................................................................................................226 Ссылки .................................................................................................................226
Стр.10
10  Содержание Глава 7. Magic Wormhole ................................................................................227 Как это выглядит.................................................................................................228 Как это работает .................................................................................................229 Сетевые протоколы, задержки передачи, совместимость клиентов ..............231 Сетевые протоколы и совместимость клиентов...........................................231 Архитектура сервера ..........................................................................................234 База данных ....................................................................................................235 Транзитный клиент: отменяемые отложенные операции ..............................235 Сервер транзитной ретрансляции .....................................................................238 Архитектура клиента ..........................................................................................239 Отложенные вычисления и конечные автоматы, одноразовый наблюдатель ........................................................................................................240 Одноразовые наблюдатели ................................................................................243 Promise/Future и Deferred ...................................................................................244 Отсроченные вызовы, синхронное тестирование ...........................................247 Асинхронное тестирование с объектами Deferred ...........................................248 Синхронное тестирование с объектами Deferred .............................................249 Синхронное тестирование и отсроченный вызов ........................................252 Глава 8. Передача данных в браузерах и микросервисах с использованием WebSocket ......................................................................255 Нужен ли протокол WebSocket? ........................................................................255 WebSocket и Twisted ............................................................................................256 WebSocket, из Python в Python ...........................................................................258 WebSocket, из Python в JavaScript ......................................................................261 Более мощная поддержка WebSocket в WAMP ..................................................263 Итоги ...................................................................................................................269 Глава 9. Создание приложений с asyncio и Twisted ...............................271 Основные понятия .............................................................................................271 Механизм обещаний ..........................................................................................272 Циклы событий ...............................................................................................273 Рекомендации .....................................................................................................274 Пример: прокси с aiohttp и treq .........................................................................277 Итоги ...................................................................................................................280 Глава 10. Buildbot и Twisted .........................................................................282 История появления Buildbot ..............................................................................282 Эволюция асинхронного выполнения кода на Python в Buildbot ...............283 Миграция синхронных API ............................................................................286 Этапы асинхронной сборки ...........................................................................287 Итоги ...................................................................................................................254 Ссылки .................................................................................................................254
Стр.11
Содержание  11 Код Buildbot .........................................................................................................287 Асинхронные утилиты ...................................................................................288 «Дребезг» .........................................................................................................288 Асинхронные службы .....................................................................................288 Кеш LRU ...........................................................................................................291 Отложенный вызов функций .........................................................................291 Взаимодействие с синхронным кодом .........................................................292 SQLAlchemy .....................................................................................................292 requests ............................................................................................................293 Docker ..............................................................................................................295 Конкурентный доступ к общим ресурсам ....................................................296 yield как барьер конкуренции ........................................................................296 Функции из пула потоков не должны изменять общее состояние .............297 Блокировки Deferred.......................................................................................298 Тестирование ..................................................................................................298 Имитации ............................................................................................................300 Итоги ...................................................................................................................300 Глава 11. Twisted и HTTP/2 ...........................................................................301 Введение ..............................................................................................................301 Цели и задачи......................................................................................................303 Бесшовная интеграция ...................................................................................303 Оптимизация поведения по умолчанию ......................................................304 Разделение задач и повторное использование кода ...................................305 Проблемы реализации .......................................................................................306 Что такое соединение? Ценность стандартных интерфейсов .....................306 Мультиплексирование и приоритеты ...........................................................309 Противодавление ...........................................................................................315 Противодавление в Twisted ...........................................................................317 Противодавление в HTTP/2............................................................................319 Текущее положение дел и возможность расширения в будущем ...................321 Итоги ...................................................................................................................322 Глава 12. Twisted и Django Channels ..........................................................323 Введение ..............................................................................................................323 Основные компоненты Channels ......................................................................325 Брокеры сообщений и очереди..........................................................................325 Распределенные многоуровневые системы в Twisted .....................................327 Текущее положение дел и возможность расширения в будущем ...................328 Итоги ...................................................................................................................329 Предметный указатель ..................................................................................330
Стр.12

Облако ключевых слов *


* - вычисляется автоматически
Периодика по подписке
Антиплагиат система Руконтекст