精华内容
下载资源
问答
  • Tornado

    千次阅读 2018-11-21 19:26:43
    Tornado Tornado 是使用 Python 编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。 Python Web 框架有三 ...

    Tornado

    Tornado 是使用 Python 编写的一个强大的、可扩展的Web服务器。它在处理严峻的网络流量时表现得足够强健,但却在创建和编写时有着足够的轻量级,并能够被用在大量的应用和工具中。

    Python Web 框架有三 Django、Flask、Tornado 其中 Tornado 是唯一一个异步框架.

    我也是第一次用 Tornado 之前都是在用 Flask ,但是没办法啊,项目用的是 Tornado,学啊学啊学啊学,好好学习,天天向上。

    初入Tornado

    创建一个启动实例

    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    
    from tornado.options import define, options
    # tornado.options 可以从命令行中读取设置,如果指定参数,则在代码中定义的将会被替代.
    define('port', default=8000, type=int)  # 监听HTTP请求的端口,也可以监听命令行的输入的参数,type代表输入参数的类型
    
    class IndexHandler(tornado.web.RequestHandler): # Tornado在处理请求时,将类实例化,并调用与HTTP请求方法对应的方法.
        def get(self):  # 只定义了get方法,只对HTTP的GET请求作出相应.
            greeting = self.get_argument('greeting', 'Hello')   # 查询字符串中取得参数greeting的值,不存在就是第二个值.
            self.write(greeting + ', World!')   # 以一个字符串作为函数的参数,将其写入到HTTP响应中.
    
    if __name__ == "__main__":
        tornado.options.parse_command_line()    # 使用options模块来解析命令行输入的命令
        app = tornado.web.Application(handlers=[(r"/", IndexHandler)])  # 创建一个Tornado的Application类的实例,handlers应用那个类来响应请求.
        
        http_server = tornado.httpserver.HTTPServer(app)    # 以下的代码会被反复使用,一旦Application对象被创建,传递给Tornado的HTTPServer对象
        http_server.listen(options.port)    # 使用在命令行指定的端口进行监听,通过options对象取出
        tornado.ioloop.IOLoop.instance().start()    # 在程序准备好接受HTTP请求后,创建一个Tornado的LOLoop实例.
    
    python hello.py --port=8000
    

    然后就能访问8000端口了

    参数handlers

    app = tornado.web.Application(handlers=[(r"/", IndexHandler)])
    这个handlers参数很重要,类型是元组组成的 列表 ,其中元组第一个元素是 用于匹配的正则表达式 ,第二个元素是 RequestHanlder 类。
    (r’/'被看作'^/$')当珍珠表达式包含一个捕获分组(被括号括起来),匹配的内容将作为相应HTTP请求的参数传到RequestHandler对象中。

    字符串服务

    使用post请求和传递参数方法

    import textwrap
    
    import tornado.httpserver
    import tornado.ioloop
    import tornado.options
    import tornado.web
    
    from tornado.options import define, options
    define("port", default=8000, type=int)
    
    class ReverseHandler(tornado.web.RequestHandler):	# 做字符串反转形式
        def get(self, input):	# input匹配正则表达式第一个括号里的字符串,如果还有一些列额外的括号,则依次传递
            self.write(input[::-1])
    
    class WrapHandler(tornado.web.RequestHandler):	
        def post(self):	# 接受post请求
            text = self.get_argument('text')	# 从post请求提取text文本
            width = self.get_argument('width', 40)	# 没有宽度默认为40
            self.write(textwrap.fill(text, int(width)))	# Python内建的textwrap
            
    if __name__ == "__main__":
        tornado.options.parse_command_line()
        app = tornado.web.Application(
            handlers=[
                (r"/reverse/(\w+)", ReverseHandler),	# 将匹配的表达式,作为参数传递给RequestHandler类
                (r"/wrap", WrapHandler)
            ]
        )
        http_server = tornado.httpserver.HTTPServer(app)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
    
    • 从传入的HTTP请求获得信息(get_argument和出入到get和post的参数)
    • HTTP相应(使用self.write()方法)

    HTTP状态码

    使用RequestHandler类的set_status()方法显式地设置HTTP状态码,在某些情况下会自动设置HTTP状态码。

    404Not Found
    HTTP请求的路径无法匹配任何RequestHandler类对应的模式。

    400Bad Request
    调用了没有默认值的get_argument函数,并且没有发现给定名称的参数。

    405Method Not Allowed
    传入的请求使用了RequestHandler没有定义的HTTP方法

    Internal Server Error
    程序遇到任何不能让其退出的错误时,或代码没有捕捉异常也会导致。

    代替默认的响应错误,重写write_error方法。

    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)
    
    展开全文
  • tornado

    2018-10-26 10:01:00
  • Tornado 开发教程

    万人学习 2019-12-11 10:50:00
    Tornado开发教程,内容包括:Tornado项目开发、Tornado路由、Tornado请求响应、Tornado重定向、Tornado模板、Tornado文件上传、Tornado Ajax、Tornado数据库。
  • 介绍Tornado

    2018-12-19 16:39:29
    本书介绍了Tornado Web框架,并从异步web编程的角度对Twisted进行了详细的诠释,该书是Python三大Web框架Django、Flask、Tornado的必备学习资料。英文原版《Introduction to Tornado》。
  • tornado学习

    2017-09-22 21:56:40
    讲解tornado的基础知识,通过简单示例,使用tornado完成基本流程的开发,学习tornado的主要的知识点,在后续课程中会逐个知识点进行深入讲解
  • Tornado-MySQL:用于Tornado的PyMySQL分支
  • Tornado框架基础

    2021-03-23 14:36:56
    Tornado是FriendFeed使用的可扩展的非阻塞式web服务器及其相关工具的开源版本。这个Web框架看起来有些像web.py或者Google的webapp,不过为了能有效利用非阻塞式服务器环境,这个Web框架还包含了一些相关的有用工具和...
  • tornado4.5.3

    2018-03-27 13:18:45
    tornado_4.5.3.zip,网站开发框架,当redis-server.exe开启后,最新的tornado-redis不能开启,可尝试该版本
  • tornado介绍

    2016-02-06 23:25:22
    tornado中文介绍,Python开发框架中文介绍

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,648
精华内容 13,859
关键字:

tornado