相關模塊
表2-4 列出了其他一些與網絡和套接字編程有關的Python 模塊。當開發低級套接字
程序時,經常配合使用select 模塊和socket 模塊。select 模塊提供了select()函數,該函數
管理套接字對象集合。它所做的最有用的一個事情就是接收一套套接字,并監聽它們活動
的連接。select()函數將會阻塞,直到至少有一個套接字已經為通信做好準備,而當其發生時,它將提供一組準備好讀信息的集合(它還可以確定哪些套接字準備好寫入,雖然它不像前一
種操作那么常見)。
模 塊 | 描 述 |
---|---|
socket | 正如本章討論的,它是低級網絡編程接口 |
asyncore/asynchat | 提供創建網絡應用程序的基礎設施,并異步地處理客戶端 |
select | 在一個單線程的網絡服務器應用中管理多個套接字連接 |
SocketServer | 高級模塊,提供網絡應用程序的服務器類,包括forking 或threading族 |
在創建服務器方面,async*和SocketServer 模塊都提供更高級的功能。它們以socket 和/
或select 模塊為基礎編寫,能夠使客戶端/服務器系統開發更加迅速,因為它們已經自動處理
了所有的底層代碼。你需要做的所有工作就是以自己的方式創建或繼承適當的基類。正如前
面所提到的,SocketServer 甚至提供了將線程或新進程集成到服務器的功能,它提供了一個
更像并行處理的客戶端請求的流程。
雖然在標準庫中async*提供了唯一的異步開發支持,但是在前一節中,我們引入了一個
比舊版本更加強大的第三方包Twisted。雖然本章中我們已經看到的示例代碼稍長于粗糙的腳
本,但是Twisted 提供了一個更加強大和靈活的框架,并且已經實現了很多協議。可以在
http://twistedmatrix.com 網站上找到更多關于Twisted 的消息。
Concurrence 是一個更現代化的網絡框架,它是荷蘭社交網絡Hyves 的后臺引擎。
Concurrence 是一個搭配了libevent 的高性能I/O 系統,libevent 是一個低級事件回調調度系統。
Concurrence 是一個異步模型,它使用輕量級線程(執行回調)以事件驅動的方式進行線程間
通信和消息傳遞工作。可以在http://opensource.hyves.org/concurrence 網址找到更多關于
Concurrence 的信息。
現代網絡框架遵循眾多異步模型(greenlet、generator 等)之一來提供高性能異步服務器。
這些框架的其中一個目標就是推動異步編程的復雜性,以允許用戶以一種更熟悉的同步方式
進行編碼。