第一章 tornado的简历
2016-03-03 本文已影响193人
翎月
我们从tornado的一份档案开始介绍轻量、易扩展的web界大佬
- 姓名:tornado
- 别名:FriendFeed 的 Web 服务器及其常用工具的开源版本
- 民族:反正不是中国
- 性别:不确认
- 民族:反正不是汉族
- 职业:Python界轻量级的web服务框架的幕后大老板、独立董事
- 社会关系:
- 父亲:Python
- 母亲:Python
- 儿子:千千万万Python用户
- 生卒:21世纪-永远
- 个人能力: 简单、轻松的为Python的web服务开发者提供帮助,能解决C10K问题。
1.1 tornado的安装
忽略,地球人都知道
1.2 tornado版hello world - 简单的Web服务
首先认识一下tornado是如何工作的,这里看看业界语言最经典的test,hello world问题:
1.2.1hello tornado
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', tornado world!')
if __name__ == "__main__":
tornado.options.parse_command_line()
app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port)
tornado.ioloop.IOLoop.instance().start()
- 启动服务:python hello.py --port=8000
- 访问服务:
$ curl http://localhost:8000/
Hello, tornado world!
神奇的hello world就这样出生了,虽然谈不上眉清目秀,但是简单,不用怀胎十月,痛苦分娩。下面我们看看hello.py的剖腹产的视频,看看这哥们的出生过程,已经身体器官的构成。
我们一步步分解开看看,这个小伙子是怎么成人的:
import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.web
- 导入tornado的必备模块,虽然tornado有很多有用的模块,但是这四个是最重要的模块,这就像婴儿的四肢和大脑,为人类必备。
from tornado.options import define, options
define("port", default=8000, help="run on the given port", type=int)
- 这是tornado提供的一个很有用的模块(tornado.options),是从命令行中读取设置。我们这里读取的是监听的http请求的端口,我们看看define的工作方法:
- 如果命令行出现define设置的同名参数,则这个参数成为全局的options的一个属性
- 如果用户在命令行运行了--help,则打印出define指定的help的信息
- 如果用户没有指定相应的数据值,则使用default
- type参数是指定port属性的类型,若命令行设置的参数类型校验不通过,则抛出一个异常。
class IndexHandler(tornado.web.RequestHandler):
def get(self):
greeting = self.get_argument('greeting', 'Hello')
self.write(greeting + ', friendly user!')
- 这个函数是前端请求背后的男人,即tornado前端请求的处理类,这个男人一个月的薪资决定了前端的请求是逛天猫的奢侈品旗舰店呢,还是淘宝小摊。
- 当处理一个请求时,Tornado将这个类实例化,并调用与HTTP请求方法所对应的方法,此处我们定义了一个get方法,也就是说此函数处理tornado的HTTP的get请求作出响应。
未完待续