最近研究Python下的可用於分佈式的框架,常用的有twisted、asyncio/tulip、tornado等,又發現了個Stackless,這個的設計思路和模式和之前的幾個有所不同,雖然他們實現的功能和支持的協議基本差不多,在技術實現的底層有所差異的。
Stackless名稱上就是無棧的,而tornado宣稱就是全棧式的,和其他另外兩種類似,用的都是協程異步模式,而Stackless主要是基於微線程的,可控制性和定製性更強,底層開發時候可以提供更多的靈活性和可選擇型。
Stackless官方網站:
從python2.7到3.4都支持。
著名的greenlet是其副產品,
http://www.oschina.net/p/greenlet
在該頁面的介紹:
greenlet 包是 Stackless 的副產品,其將微線程稱爲 “tasklet” 。tasklet運行在僞併發中,使用channel進行同步數據交換。
一個”greenlet”,是一個更加原始的微線程的概念,但是沒有調度,或者叫做協程。這在你需要控制你的代碼時很有用。你可以自己構造微線程的 調度器;也可以使用”greenlet”實現高級的控制流。例如可以重新創建構造器;不同於Python的構造器,我們的構造器可以嵌套的調用函數,而被 嵌套的函數也可以 yield 一個值。。
Greenlet是作爲一個C擴展模塊給未修改的解釋器的。
用Stackless實現的支持百萬級長連接在線用戶的HTTP服務器,
http://www.oschina.net/p/eurasia3
該頁面的介紹:
Eurasia3 是一種能夠支持百萬級同時在線長連接用戶數量的 HTTP 服務器, 或者每秒處理上萬次 CGI 請求的常規應用服務器。
Eurasia3 同時也泛指以 Eurasia3 應用服務器爲核心的一系列組件形成的應用程序框架, 主要是一個嵌入式對象數據庫 MissileDB, 和一個 JavaScript 框架 NJF。
Eurasia3 基於 Stackless Python。
產品信息:
運行平臺: 支持 Stackless Python 2.5 的系統, 包括各種嵌入式平臺
開發語言: Stackless Python
開源協議: BSD License