相关模块
表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 等)之一来提供高性能异步服务器。
这些框架的其中一个目标就是推动异步编程的复杂性,以允许用户以一种更熟悉的同步方式
进行编码。