tornado【基本认识】
代码案例
1 # coding:utf-8 2 # 导入包 3 import tornado.web 4 # 导入ioloop包 5 import tornado.ioloop 6 7 class IndexHandler(tornado.web.RequestHandler): 8 """主路由处理类""" 9 def get(self): 10 """对应的get请求内容""" 11 self.write('hello kay') 12 13 14 if __name__ == '__main__': 15 app = tornado.web.Application([ 16 (r'/', IndexHandler) 17 ]) 18 19 app.listen(8000) 20 tornado.ioloop.IOLoop.current().start()
RequestHandler封装了对应一个请求的所有信息和方法,对每一种请求方式,把对应的逻辑加入到对应的成员方法当中
Application是该框架的应用类是与服务器对接的接口,里面保存了路由信息表,其初始化接收的第一个参数就是一个路由信息映射元组的列表
tornado.ioloop原理伯乐在线
tornado.HTTPServer
1 # coding:utf-8 2 # 导入包 3 import time 4 import tornado.web 5 # 导入ioloop包 6 import tornado.ioloop 7 8 # 导入httpserver模块 9 from tornado import httpserver 10 11 12 class IndexHandler(tornado.web.RequestHandler): 13 """主路由处理类""" 14 def get(self): 15 """对应的get请求内容""" 16 self.write('hello kay') 17 18 19 if __name__ == '__main__': 20 app = tornado.web.Application([ 21 (r'/', IndexHandler) 22 ]) 23 24 # 实现了web服务器 服务器服务于app 所以实例化HTTPServer时需要传入pp 25 http_server = httpserver.HTTPServer(app) 26 # ===========================多进程 27 # http_server.bind(8000) 28 # num_processes 指定开启几个进程,默认为1, 如果未制定:根据当前cpu的核数,创建等量的子进程, 29 # http_server.start(num_processes=) 30 31 32 # =============================单进程实现 33 # 监听端口号 34 http_server.listen(8000) 35 36 tornado.ioloop.IOLoop.current().start()
http_server.start(num_processes=1)方法指定开启几个进程,参数num_processes默认值为1,即默认仅开启一个进程;如果num_processes为None或者<=0,则自动根据机器硬件的cpu核芯数创建同等数目的子进程;如果num_processes>0,则创建num_processes个子进程
options
tornado为我们提供了一个便捷的工具,tornado.options模块——全局参数定义、存储、转换。将服务器的端口变的灵活
- 在程序当中配置,通过命令行向程序当中传递参数
tornado.options.define('port', default=8000, type=int, help='run server on the given port.')
tornado.options.define('python', default=[], type=str, multiple=True, help='kayb python.')
-
- default默认值
- type类型
- multiple指定多个参数(在命令行输入时以','分割,接受到的值为列表)
- 当在命令行输入(
python opt.py --port=8000 --python='xiao','wang' --help
)会有提示信息
- 定义配置文件config,通过指定路径设置
- 定义config配置文件
1 # coding:utf-8 2 import tornado.web 3 import tornado.ioloop 4 import tornado.httpserver 5 import tornado.options 6 7 # 一个参数 8 tornado.options.define('port', default=8000, type=int, help='run server on the given port.') 9 # 多个参数 10 tornado.options.define('python', default=[], type=str, multiple=True, help='kayb python.') 11 12 13 class IndexHandler(tornado.web.RequestHandler): 14 """主路由类""" 15 def get(self): 16 """get方法对应的执行体""" 17 self.write('hello kay python') 18 19 20 if __name__ == '__main__': 21 # 命令行输入的配置 22 tornado.options.parse_command_line() 23 # 外部文件导入 24 # tornado.options.parse_config_file('./config.py') 25 print tornado.options.options.python 26 print tornado.options.options.port 27 28 # 关闭loggin信息 29 tornado.options.options.logging = None 30 31 app = tornado.web.Application([ 32 (r'/', IndexHandler) 33 ]) 34 35 http_server = tornado.httpserver.HTTPServer(app) 36 http_server.listen(tornado.options.options.port) 37 38 tornado.ioloop.IOLoop.current().start()

浙公网安备 33010602011771号