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()
tornadoCode

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()
View Code

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()
options_Code

 

posted @ 2017-09-11 22:32  凯哥吧  阅读(139)  评论(0)    收藏  举报