在Python中如何使用Linux的epoll

Posted on 2017-04-14(Fri) in 并发编程 • 3 min read

文档出自这里

从2.6开始,Python包含了访问Linux epoll库的API。这篇文章用几个简单的python 3例子来展示下这个API。欢迎大家质疑和反馈

阻塞socket编程示例

示例1

  • 用python3.0搭建了一个简单的服务:在8080端口监听HTTP请求,把它打印到控制台,并返回一个HTTP响应消息给客户端。

  • 第9行:创建服务器socket。

  • 第10行:允许在11行使用bind()来监听指定端口,即使这个端口最近被其他程序监听。没有这个设置的话,服务不能运行,直到一两分钟后,这个端口不再被之前的程序使用。

  • 第11行:监听这台机器所有可用的IPv4地址上面的8080端口。

  • 第12行:通知服务端socket开始接受来自客户端的连接。

  • 第14行:这行代码直到接收到一个客户端连接才会完成。这时,服务端socket会在服务端机器上面创建一个新的socket,用来和客户端通信。这个新的socket在代码里面就是accept()调用返回的clientconnection 对象。返回的address对象代表着客户端的IP和端口。

  • 第15-17行:组装从客户端传输过来的数据,直到HTTP请求完成。HTTP协议可以参考这里

  • 第18行:把请求打印到控制台,验证操作是否正确。

  • 第19行:发送响应回客户端 …


Continue reading