[原]tornado源码分析系列(六)[HTTPServer详解]
引言:上一章讲了关于HTTPServer的原理,这一次通过分析源码来了解更多的细节 看看HTTPServer类的组织结构: HTTPServer的主要工作 一.提供了一些基础的比如说listen,bind此类共有操作 二.完成了一个 _handle_events()的公有回调函数,此函数是 IOLoop的基础,此函数为每一个连接创建一个单独的 IOStream 对象 三.start函数,启动HTTPServer,并设置相应的参数(如根据CPU个数来设置进程数等) 从HTTPServer类的构造函数可以看出,最重要的参数是设置回调函数,此回调函数用于处理request对象 每次有HTTP的请求,都会通过HTTPConnection 封装一个HTTPRequest对象,这个对象包含了HTTP请求的所有信息 所以在HTTPServer层,需要对这个对象进行一番处理后调用 request.write将结果返回给客户端 此回调函数会先注册到HTTPServer,然后注册到HTTPConnection 里面,因为request这个对象是由HTTPConnection对象产生 def _handle_events(self, fd, events): while True: try: connection, address = self._socket.accept() except