# tornado初识
来源:互联网 发布:防蓝光近视眼镜 知乎 编辑:程序博客网 时间:2024/06/15 23:20
tornado初识
例1
helloworld示例
import tornado.web# tornado.options来从命令行中读取设置from tornado.options import define, optionsdefine("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') # 获取url参数greeting的值 self.write(greeting + ', friendly user!')if __name__ == "__main__": """ 可以直接运行该脚本,也可以通过命令行方式运行, python hello_world.py --port=8888 """ 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()
剖析
- tornado.options:从命令行中读取设置,如果一个与define语句中同名的设置在命令行中被给出,那么它将成为全局options的一个属性。如果用户运行程序时使用了–help选项,程序将打印出所有你定义的选项以及你在define函数的help参数中指定的文本。如果用户没有为这个选项指定值,则使用default的值进行代替。Tornado使用type参数进行基本的参数类型验证,当不合适的类型被给出时抛出一个异常
- tornado.options.parse_command_line() 来解析命令行
- app = tornado.web.Application(handlers=[(r”/”, IndexHandler)]),告诉Tornado应该用哪个类来响应请求
例2
import textwrapimport tornado.webfrom tornado.options import define, optionsdefine("port", default=8000, help="run on the given port", type=int)class ReverseHandler(tornado.web.RequestHandler): def get(self, input): self.write(input[::-1])class WrapHandler(tornado.web.RequestHandler): def post(self): text = self.get_argument('text') width = self.get_argument('width', 10) self.write(textwrap.fill(text, int(width))) # textwrap.fillif __name__ == "__main__": tornado.options.parse_command_line() app = tornado.web.Application( handlers=[ (r"/reverse/(\w+)", ReverseHandler), (r"/wrap", WrapHandler) ] ) http_server = tornado.httpserver.HTTPServer(app) http_server.listen(options.port) tornado.ioloop.IOLoop.instance().start()
- textwrap.fill: 将一行比较长的字符串切割成多行字符串、换行符分割
异常处理及状态码
- 例3:write_error异常处理
import tornado.webfrom tornado.options import define, optionsdefine("port", default=8001, 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 + ', friendly user!') def write_error(self, status_code, **kwargs): self.write("Gosh darnit, user! You caused a %d error." % status_code)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()
- 测试: curl -d foo=bar http://localhost:8000/
Gosh darnit, user! You caused a 405 error.
- 400 Bad Request: 调用了一个没有默认值的get_argument函数,并且没有发现给定名称的参数,Tornado将自动返回一个400
- 405 Method Not Allowed: 传入的请求使用了RequestHandler中没有定义的HTTP方法
阅读全文
0 0
- tornado 初识
- # tornado初识
- 初识tornado.web.RequestHandler
- 初识 tornado 应用程序的代码结构
- [精华] 初识Tornado:一个简单例子
- tornado
- Tornado
- Tornado
- tornado
- Tornado
- tornado
- tornado
- Tornado
- tornado
- Tornado
- Tornado
- Tornado
- Tornado
- 算法题:问题:输入一个数n(0<x<10),输入由1-n组成的所有可组成的数
- pycharm ubuntu安装及注册服务地址
- Ensoft.LPile.2015.v8.03.Win32 1CD(单桩水平荷载的设计计算软件)
- 1-1 beanstalkd的简介
- 闭包
- # tornado初识
- Maven学习笔记(一)-使用Maven创建项目以及常用Maven命令
- c语言实现菲波那切数列对大数求余
- Techsoft.ASTRA.Pro.v15.0.Win32_64 1DVD(结构分析)
- 自媒体书单:从入门、写作、策划到运营自媒体必须收藏的系列好书
- 1)Spring基础
- 关于软件开发四个大类型的介绍
- 【java多线程编程核心技术】2.对象及变量的并发访问(上)-笔记总结
- 机器学习实战随笔