Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Twisted из первых рук

Событийное и асинхронное программирование на Python
Покупка
Артикул: 748321.01.99
Доступ онлайн
999 ₽
В корзину
Эта книга посвящена Twisted - событийно-ориентированному сетевому фреймворку на Python, в котором можно создавать уникальные проекты. В первой части рассматриваются особенности Twisted; на практических примерах показано, как его архитектура способствует тестированию, решает общие проблемы надежности, отладки и упрощает выявление причинно-следственных связей, присущих событийно-ориентированному программированию. Детально описываются приемы асинхронного программирования, подчеркивается важность отложенного вызова функций и сопрограмм. На примере использования двух популярных приложений, treq и klein, демонстрируются сложности, возникающие при реализации веб-API с Twisted, и способы их преодоления. Вторая часть книги посвящена конкретным проектам, использующим Twisted. В число примеров входят использование Twisted с Docker, применение Twisted в роли контейнера WSGI, организация обмена файлами и многое другое. Читатель должен иметь некоторый опыт работы с Python и понимать основы контейнеров и протоколов. Знакомство с Twisted и с проектами, описанными в книге, не требуется.
Twisted из первых рук : практическое пособие / М. Задка, М. Уильямс, К. Бенфилд [и др.] ; пер. с англ. А. Н. Киселева. - Москва : ДМК Пресс, 2020. - 338 с. - ISBN 978-5-97060-795-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1210635 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Моше Задка
Марк Уильямс
Джулиан Берман 
Том Мост

www.дмк.рф

из первых рук
из первых рук

Интернет-магазин:
www.dmkpress.com

Оптовая продажа:
КТК “Галактика”
books@alians-kniga.ru

TWISTED из первых рук

TWISTED из первых рук

9 785970 607954

ISBN 978-5-97060-795-4

TWISTED

Twisted – событийно-ориентированный сетевой фреймворк на языке 
Python. Данная книга написана ведущими специалистами по Twisted, 
которые продемонстрируют, в чем состоит уникальность этого фреймворка, и ознакомят вас с проектами, в которые они лично внесли свой 
вклад.
На практических примерах иллюстрируется, как архитектура Twisted 
способствует тестированию, решает общие проблемы надежности, 
отладки и упрощает выявление причинно-следственных связей. Описываются приемы асинхронного программирования и подчеркивается 
важность отложенного вызова функций и сопрограмм. 

Темы, рассматриваемые в книге:
• способы интеграции Twisted и asyncio с применением адаптеров;
• автоматизация процессов сборки, тестирования и выпуска     
программного обеспечения с Buildbot;
• создание клиентов и серверов с использованием Autobahn;
• передача файлов с помощью Magic Wormhole;
• организация распределенного облачного хранилища файлов      
с Tahoe LAFS;
• тонкости реализации и использования HTTP/2 в Python и Twisted;
• поддержка асинхронных задач с использованием 
DjangoChannels.

Для изучения представленного материала требуется некоторый опыт 
программирования на Python и понимание основ работы контейнеров 
и протоколов.
Событийное и асинхронное 
Событийное и асинхронное 
программирование на Python
программирование на Python

Моше Задка, Марк Уильямс, Кори Бенфилд, Брайан Уорнер,  
Дастин Митчелл, Кевин Сэмюэл, Пьер Тарди 

Twisted из первых рук

Moshe Zadka
Mark Williams
Cory Benfield
Brian Warner
Dustin Mitchell
Kevin Samuel
Pierre Tardy

Expert Twisted

Event-Driven and Asynchronous  
Programming with Python

Моше Задка 
Марк Уильямс
Кори Бенфилд 
Брайан Уорнер 
Дастин Митчелл 
Кевин Сэмюэл 
Пьер Тарди 

Москва, 2020

Twisted из первых рук

Событийное и асинхронное 
программирование на Python

УДК 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 (анг.) 
©  2019 Moshe Zadka, Mark Williams, Cory Benfield,  
Brian Warner, Dustin Mitchell, Kevin Samuel, Pierre Tardy
ISBN 978-5-97060-795-4 (рус.) 
© Оформление, издание, перевод, ДМК Пресс, 2020

Посвящается AZ, NZ и TS: Twisted добился признания,  
и мы с нетерпением ждем следующего поколения  
разработчиков.

– Моше Задка (Moshe Zadka)

Содержание

Об авторах ..........................................................................................................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

Управление потоком в событийно-ориентированных программах ................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

 Содержание

Журналирование с использованием 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

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

Доступ онлайн
999 ₽
В корзину