
580
|
第 18 章 非同步的替代方案
• 在
callback-based
(以回呼為基礎)的 async 架構中,你的程式碼會將
每個預期的事件關聯至一個
callback
(
回呼
),它是這種非同步框架會
在事件發生時呼叫的一個函式或其他 callable。這個關聯可以是明確的
(傳入一個函式以請求在適當的時候回呼它),或以各種方式隱含產
生(例如擴充一個基礎類別,覆寫適當的方法)。Python 的標準程式
庫對於 callback-based async 架構的支援並不是特別強大,也不是最新
的,而我們不推薦它,也不會在本書中進一步涵蓋它;如果你想要使
用這種架構,我們推薦第三方的框架 Twisted(
https://twistedmatrix.com/
trac/
)或更專門的 Tornado(
http://www.tornadoweb.org/en/stable/
), 特
別適合用於 web 相關任務,還支援下一節會提到的 coroutines。
• 第三種,最為現代的架構是
coroutine-based
(以協程為基礎)的 async
架構,涵蓋於下一節。
在本章中,解說了 coroutine-based async 架構的一般概念後,我們會涵蓋
僅限於 v3 的模組
asyncio
,它能讓你實作這種架構,也能實作 callback-
based 的架構,以及低階模組
selectors
(在 v3 的標準程式庫中,但 v2 也
能下載第三方的後向移植版),它能讓你實作多工架構。
基於 Coroutine