精通Twisted:Python事件驅動及異步編程( 簡體 字) | |
作者:馬克·威廉姆斯(Mark Williams) | 類別:1. -> 程式設計 -> Python |
出版社:機械工業出版社 | 3dWoo書號: 53928 詢問書籍請說出此書號! 有庫存 NT售價: 495 元 |
出版日:1/1/2021 | |
頁數:300 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787111670353 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
關于作者
關于技術評審員 致謝 第一部分 基礎 第1章 基于Twisted的事件驅動編程2 1.1 一個關于Python版本的注釋3 1.2 什么是事件驅動編程3 1.3 多重事件3 1.4 Application (tkinter.Tk()).mainloop()4 1.5 多路復用和多路分解5 1.6 select多路復用6 1.6.1 select的歷史、成員及目的6 1.6.2 select和套接字7 1.6.3 套接字事件的“如何”和“為什么”8 1.6.4 處理事件9 1.6.5 一個使用select的事件循環10 1.6.6 事件驅動的客戶端和服務器11 1.7 非阻塞I/O14 1.7.1 知道何時停止14 1.7.2 跟蹤狀態14 1.7.3 狀態讓程序更復雜18 1.8 通過傳輸和協議管理復雜度18 1.9 傳輸:使用協議19 1.9.1 使用傳輸和協議打乒乓球20 1.9.2 具有協議和傳輸的客戶端與服務器24 1.9.3 Twisted和反應器、協議以及傳輸25 1.10 事件驅動編程的價值25 1.11 Twisted和現實世界27 1.12 實時事件31 1.13 通過zope.interface來實現的事件接口35 1.14 事件驅動程序中的流控制37 1.15 Twisted中的流控制以及生產者和消費者38 1.15.1 推送生產者38 1.15.2 消費者41 1.15.3 拉起生產者43 1.16 小結43 第2章 Twisted異步編程介紹45 2.1 事件處理程序和組合45 2.2 什么是異步編程48 2.3 未來值的占位符48 2.4 異步式異常處理50 2.5 Twisted中的Deferred介紹54 2.5.1 callback54 2.5.2 errback和Failure55 2.5.3 組合Deferred58 2.6 生成器和內聯回調61 2.6.1 yield表達式61 2.6.2 send方法62 2.6.3 throw方法64 2.6.4 使用內聯回調進行異步編程65 2.7 Python中的協程67 2.7.1 使用yield from的協程67 2.7.2 協程的async和await用法68 2.8 等待Deferred73 2.9 通過ensureDeferred使用協程74 2.10 多路復用Deferred75 2.11 測試Deferred78 2.12 小結81 第3章 使用treq和Klein的應用83 3.1 為何使用庫83 3.2 feed聚合84 3.3 treq介紹85 3.4 Klein介紹87 3.4.1 Klein和Deferred89 3.4.2 使用Plating構建Klein模板90 3.5 feed聚合初探92 3.6 使用Klein和treq進行測試驅動開發97 3.6.1 在可安裝項目上運行測試98 3.6.2 使用StubTreq測試Klein101 3.6.3 使用Klein測試treq107 3.6.4 使用twisted.logger記錄日志110 3.6.5 使用twist運行Twisted應用程序115 3.7 小結118 第二部分 項目 第4章 在Docker中使用Twisted122 4.1 Docker介紹122 4.1.1 容器123 4.1.2 容器鏡像123 4.1.3 runc和containerd124 4.1.4 客戶端124 4.1.5 注冊服務器125 4.1.6 鏡像構建125 4.1.7 多階段構建126 4.2 在Docker中使用Python127 4.2.1 部署選項127 4.2.2 虛擬環境132 4.2.3 Pex133 4.2.4 構建選項134 4.3 在Docker中使用Twisted135 4.3.1 ENTRYPOINT入口點和進程ID 1135 4.3.2 自定義插件136 4.3.3 NColony136 4.4 小結138 第5章 使用Twisted作為WSGI服務器139 5.1 WSGI介紹139 5.1.1 PEP140 5.1.2 原生案例141 5.1.3 參考實現142 5.1.4 WebOb示例144 5.1.5 Pyramid示例145 5.2 開始146 5.2.1 WSGI服務器146 5.2.2 為什么使用Twisted149 5.3 使用多核的策略161 5.3.1 負載均衡器162 5.3.2 在共享模式下打開套接字163 5.3.3 其他選項165 5.4 動態配置166 5.4.1 可A/B測試的Pyramid應用程序166 5.4.2 使用AMP自定義插件167 5.4.3 控制程序170 5.5 小結171 第6章 Tahoe-LAFS: 權限最少的文件系統173 6.1 Tahoe-LAFS是如何工作的173 6.2 系統架構176 6.3 Tahoe-LAFS如何使用Twisted178 6.4 曾經遇到的問題178 6.5 內部文件節點接口180 6.6 前端協議組合181 6.7 Web前端181 6.7.1 文件類型、內容類型、/name/183 6.7.2 保存至磁盤184 6.7.3 Range標頭185 6.7.4 返回端的錯誤轉換186 6.7.5 渲染UI元素:Nevow模板187 6.8 FTP前端187 6.9 SFTP前端192 6.10 向后不兼容的Twisted API192 6.11 小結194 6.12 參考資料195 第7章 Magic Wormhole196 7.1 Magic Wormhole看起來像什么197 7.2 Magic Wormhole是如何工作的198 7.3 網絡協議、傳輸延遲、客戶端兼容性199 7.4 服務器架構201 7.5 傳輸客戶端:可取消的Deferred203 7.6 傳輸中繼服務器205 7.7 Wormhole客戶端架構206 7.8 Deferred與狀態機的比較207 7.9 一次性觀察者209 7.10 Promise/Future與Deferred的比較210 7.11 最終發送和同步測試213 7.12 使用Deferred進行異步測試214 7.13 使用Defferred進行同步測試215 7.14 小結219 7.15 參考資料219 第8章 使用WebSocket將數據推送到瀏覽器和微服務221 8.1 為什么使用WebSocket221 8.2 WebSocket和Twisted222 8.3 原始WebSocket,從Python到Python223 8.4 原始WebSocket,在Python和JavaScript之間227 8.5 帶有WAMP的更強大的WebSocket229 8.6 小結235 第9章 使用asyncio和Twisted的應用程序237 9.1 核心概念237 9.2 Promise238 9.3 準則239 9.4 案例研究:具有aiohttp和treq的代理242 9.5 小結246 第10章 Buildbot和Twisted247 10.1 Buildbot的歷史247 10.1.1 Buildbot異步Python的演變248 10.1.2 遷移同步API250 10.1.3 異步構建步驟251 10.2 Buildbot的代碼251 10.2.1 異步實用程序252 10.2.2 去抖動252 10.2.3 異步服務252 10.2.4 LRU緩存254 10.2.5 eventual255 10.2.6 與同步代碼結合255 10.2.7 SQLAlchemy255 10.2.8 request256 10.2.9 Docker258 10.2.10 共享資源的并發訪問259 10.2.11 測試261 10.2.12 偽造262 10.3 小結263 第11章 Twisted和HTTP/2264 11.1 介紹264 11.2 設計目標266 11.2.1 無縫集成266 11.2.2 默認情況下最優化的行為267 11.2.3 分離問題和代碼重用267 11.3 實現中的問題268 11.3.1 標準接口的價值以及什么是連接268 11.3.2 多路復用和優先級270 11.3.3 背壓275 11.3.4 Twisted中的背壓277 11.3.5 HTTP/2中的背壓279 11.4 現狀和未來發展281 11.5 小結282 第12章 Twisted和Django Channel283 12.1 介紹283 12.2 Channel構建基塊284 12.3 消息代理和隊列285 12.4 Twisted分布式多層系統286 12.5 現狀和未來發展287 12.6 小結288 Python的事件驅動的網絡引擎Twisted,并回顧它的幾個最流行的應用程序項目。由社區領頭人撰寫,他們為所涵蓋的許多項目做出了貢獻,并在書中分享了他們來之不易的見解和經驗。
|