资讯专栏INFORMATION COLUMN

Tornado-02、编写第一个tornado程序

silencezwm / 940人阅读

摘要:简介是使用编写的一个强大的可扩展的服务器。是一个编写对请求响应的框架。作为程序员,你的工作是编写响应特定条件请求的响应的。注意不能序列化一个列表,但是字典是可以的。

1.Tornado简介

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

tornado的安装也很简单,直接使用pip安装即可:pip install tornado

2.Tornado路由映射

我们已经知道了Tornado是什么了,现在让我们看看它能做什么吧。我们首先从使用Tornado编写一个简单的Web应用开始。

Tornado是一个编写对HTTP请求响应的框架。作为程序员,你的工作是编写响应特定条件HTTP请求的响应的handler。下面是一个全功能的Tornado应用的基础示例:
新建一个python file 命名为start1 往文件里加入一下代码

start1.py

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("hello ")

application = tornado.web.Application([
    (r"/",MainHandler),
])

if __name__ == "__main__":
    application.listen(8000) #在这里需要设置端口转发,把主机的8000端口转发到虚拟机的8000端口
    tornado.ioloop.IOLoop.instance().start()


点击tool--> start SSH session
在pycharm 下方的terminal中输入以下命令执行这个py文件


workon py3env
cd tornado_1
ls
python start1.py


然后在浏览器地址栏中键入相应的ip地址与路由
*注意地址栏内填入ip地址(就是ubuntu里面ifconfig显示的那个地址)再在后面加上":"再加上端口号
如:你的ip为 192.43.22.132 端口为9000
那么地址栏就该这么填 192.43.22.132:9000*



这是一个简单,基础的示例,接下来看一个更加复杂一点的示例。

start2.py
import tornado.httpserver  #帮助启动tornado服务器
import tornado.ioloop      #开启tornado循环,后台等待
import tornado.options       #命令行中读取设置
import tornado.web         #RequestHandler 和 Application 在这个模块里面

from tornado.options import define, options   #define用来定义默认端口号

# 定义一个默认端口
define("port", default=9000, help="run on the given port", type=int)


# 定义一个事件处理的类
class IndexHandler(tornado.web.RequestHandler):
    def get(self):  # 这是get方法
        self.write("abc")  # 往页面中写入字符串abc  


if __name__ == "__main__":
    tornado.options.parse_command_line()

    app = tornado.web.Application(  
        handlers=[  
        (r"/", IndexHandler),  # 路由映射 当访问路由/的时候 调用IndexHandler类来处理
        ]
    )
    http_server = tornado.httpserver.HTTPServer(app)
    http_server.listen(options.port)  # 监听这个端口
    tornado.ioloop.IOLoop.instance().start()  # 启动这个服务

关掉上执行中的start1.py (Ctrl + C
将这个新建的文件更新到ubuntu中
再执行start2.py文件
然后在浏览器地址栏中输入ip:9000 (我们刚才换了一下port的值)
显示如下



在端口后面加上不同的路径,可以通过路由映射来做不同的事情。

在start2.py中添加以下代码


#添加路由映射
(r"/aaa", AaaHandler),

#写对应的类
class AaaHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("aaa")
    
#有了不同的映射之后就可以实现各种需求


在上面的代码中,self.write()就是输出,可以把内容输出到浏览器。
注意 write输出的内容 是python对象序列化的对象 即json对象

3.Tornado的项目结构的输入与输出

在上面的代码中,self.write()就是输出,可以把内容输出到浏览器。

但是如果想得到输入,可以使用查询字符串。
在start2.py中加入一下代码

#添加路由映射
(r"/gre", GreHandler),

#添加处理类
class GreHandler(tornado.web.RequestHandler):
    def get(self):
        gre = self.get_argument("aaa","hello") #得到网页上aaa的值 默认为hello
        self.write(gre + ",frindely user!")

这里的get_argument可以得到浏览器地址栏中的参数输入。

默认的情况
有参数的情况

参数改为123
参数输入的格式为路由后+?+变量赋值


使用get_arguments来获取查询字符串列表。

注意:write不能序列化一个列表,但是字典是可以的。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44638.html

相关文章

  • [零基础学python]Hello,一个网页分析

    摘要:的非阻塞单线程的特点在这个模块中体现。还有一个模块引入,是用完成的这两句就显示了所谓命令行解析模块的用途了。表示可以接收来自的请求了。以上把一个简单的剖析。 As he walked by the sea of Galilee, he saw two brothers, Simon, who is called Peter, and Andrew his brother, cas...

    Steve_Wang_ 评论0 收藏0
  • Tornado学习笔记(1)

    摘要:对参数类型进行检验,这里为当参数类型不合适是会抛出一个异常。将使用的第二个参数值作为默认值。而请求将从格式中取得指定的文本。这里需要正则表达式相关的知识,到了后面的学习中,必要时再去深入学习。到目前我们使用了,还支持任何合法的请求。 参考书籍《Introduction to Tornado》1.1 Tornado是什么?Tornado是使用Python编写的一个强大的、可扩展的Web服...

    ChanceWong 评论0 收藏0
  • Python:Tornado 一章:异步及协程基础:三节:协程

    摘要:上一篇文章第一章异步及协程基础第二节关键字下一篇文章第二章实战演练开发网站第一节网站结构使用协程可以开发出类似同步代码的异步行为。协程函数可以通过以下三张方式调用在本身是协程的函数内通过关键字调用。 上一篇文章:Python:Tornado 第一章:异步及协程基础:第二节:Python关键字yield下一篇文章:Python:Tornado 第二章:实战演练:开发Tornado网站:第...

    charles_paul 评论0 收藏0
  • Day 25: 联合Tornado、MongoDB 和 AngularJS 进行应用开发

    摘要:在被收购之后,维护并继续发展。设置是告诉应用在目录寻找应用模板。设置告诉应用使用目录里面的类似图像文件等静态文件。我们会在应用开发过程中,保持着调试器在后台运行。这能提供高效的开发环境。我们会把回应状态设为已创建。 编者注:我们发现了有趣的系列文章《30天学习30种新技术》,正在翻译,一天一篇更新,年终礼包。下面是第23天的内容。 今天的《30天学习30种新技术》,我决定暂时放下...

    hsluoyz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<