tornado之运行第一个tornado程序

2024-03-30 12:28

本文主要是介绍tornado之运行第一个tornado程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

更多精彩内容在公众号。

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

首先是安装tornado. tornado不支持windows。如果需要在windows下安装可以通过ActivePython的PyPM包管理器进行安装类似:pypm install tornado

在linux下安装就简单多了。pip install tornado就可以了

下面我们进入tornado的功能。首先来看一个基本的web应用,在给定的端口上监听请求,并在根目录”/”响应请求

import tornado.httpserver
import tornado.ioloop
import tornado.options
import tornado.webfrom 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, *args, **kwargs):greeting=self.get_argument('greeting','hello')self.write(greeting+'tornado user')def server_function():tornado.options.parse_command_line()app = tornado.web.Application(handlers=[(r"/", indexHandler),(r"/index",indexHandler)])http_server = tornado.httpserver.HTTPServer(app)http_server.listen(options.port,address='127.0.0.1')tornado.ioloop.IOLoop.instance().start()

在终端执行:

zhf@zhf-maple:~/py_prj$ python tornada_try.py

然后在浏览器输入http://localhost:8000/

此时在终端上可以看到对应的输出。

zhf@zhf-maple:~/py_prj$ python tornada_try.py

[I 171204 10:53:23 web:2063] 200 GET / (127.0.0.1) 0.49ms

[W 171204 10:53:23 web:2063] 404 GET /favicon.ico (127.0.0.1) 0.40ms

下面来介绍下上面应用的各个模块:

首先看下options功能。在运行代码的时候会设置端口和地址等参数。python自带有argparse模块进行参数解析。tornado中不需要调用argparse模块而是自带了options模块。下面是测试代码:

import tornado.options

from tornado.options import options

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

终端执行脚本:

zhf@zhf-maple:~/py_prj$ python tornada_try.py --port=8001

8001

如果加入了不存在的参数会报如下的错误

zhf@zhf-maple:~/py_prj$ python tornada_try.py --addr=127.0.0.1

tornado.options.Error: Unrecognized command line option: 'addr

也可以不带参数,通过define来设置默认参数。如下。port代表新增加的参数名称

default代表默认值,help代表帮助信息,当使用--help的时候会打印help的字段。type代表了前面新加参数的类型。

from tornado.options import define

define("port",default=9000,help="run on the given port",type=int)

from tornado.options import define

define("port",default=9000,help="run on the given port",type=int)

运行结果如下:

zhf@zhf-maple:~/py_prj$ python tornada_try.py

9000

zhf@zhf-maple:~/py_prj$ python tornada_try.py --help

tornada_try.py options:

  --port                           run on the given port (default 9000)

IndexHandler:这个类继承于tornado.web.RequestHandler。每当网页发起一个请求的时候,Tornadah会调用这个类并将其实例化。然后调用HTTP请求所对应的方法。也就是get方法,这个处理函数将对HTTP的GET请求作出响应。

在get方法中调用了get_argument方法。这个函数的作用是增加参数greeting,并初始化为hello。在后面的write方法调用。

write方法:这个参数的作用是生成HTTP response的具体信息。在这里里面的参数是greeting+“tornado user”, 因此在网页中生成的信息是hellotornado user

Application: 这是tornado运转起来的语句,tornado.web.Application(handlers=[(r"/", IndexHandler)])创建了一个Application实例,传递给Application的__init__函数最重要的是参数是handler,也就是[(r"/", IndexHandler)]。 handler告诉tornado该 用哪个类来响应请求。

最后是服务器的启动:listen方法监听端口和地址。ioloop方法循环执行server监听功能。

http_server = tornado.httpserver.HTTPServer(app)
http_server.listen(options.port,address='127.0.0.1')
tornado.ioloop.IOLoop.instance().start()

我们来具体看下handler参数的用法。这个handler参数是一元组组成的列表。其中元组第一个参数代表的是网页访问路径,第二个是该访问路径的触发实例

tornado.web.Application(handlers=[(r"/", indexHandler)]}

在前面的运行中,在网页中输入http://localhost:8000/可以得到打印的字符串。但是如果我们输入http://localhost:8000/index则会提示404:Not Found.提示找不到对应的网页。原因在于我们在handlers中并没有添加/index的处理方法。这就相当与django中的路由机制:

 

url(r'index/',views.index)      /index对应的处理函数是views.index

那么如果我们要访问index这个网页路径,也需要在handers中添加对应的路由机制。这样当输入http://localhost:8000/index 也会调用indexHandler实例

tornado.web.Application(handlers=[(r"/", indexHandler),(r"/index",indexHandler)]

另外在indexHandler中我们只定义了get方法。在网页中传递数据有get和post两种方法。如果网页采用的是post的方法,那么同样的在indexHandler中需要定义post函数,用法和get函数是一样的。

这篇关于tornado之运行第一个tornado程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/861488

相关文章

将Java程序打包成EXE文件的实现方式

《将Java程序打包成EXE文件的实现方式》:本文主要介绍将Java程序打包成EXE文件的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录如何将Java程序编程打包成EXE文件1.准备Java程序2.生成JAR包3.选择并安装打包工具4.配置Launch4

Java程序进程起来了但是不打印日志的原因分析

《Java程序进程起来了但是不打印日志的原因分析》:本文主要介绍Java程序进程起来了但是不打印日志的原因分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Java程序进程起来了但是不打印日志的原因1、日志配置问题2、日志文件权限问题3、日志文件路径问题4、程序

Python运行中频繁出现Restart提示的解决办法

《Python运行中频繁出现Restart提示的解决办法》在编程的世界里,遇到各种奇怪的问题是家常便饭,但是,当你的Python程序在运行过程中频繁出现“Restart”提示时,这可能不仅仅是令人头疼... 目录问题描述代码示例无限循环递归调用内存泄漏解决方案1. 检查代码逻辑无限循环递归调用内存泄漏2.

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

如何用java对接微信小程序下单后的发货接口

《如何用java对接微信小程序下单后的发货接口》:本文主要介绍在微信小程序后台实现发货通知的步骤,包括获取Access_token、使用RestTemplate调用发货接口、处理AccessTok... 目录配置参数 调用代码获取Access_token调用发货的接口类注意点总结配置参数 首先需要获取Ac

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T

解读docker运行时-itd参数是什么意思

《解读docker运行时-itd参数是什么意思》在Docker中,-itd参数组合用于在后台运行一个交互式容器,同时保持标准输入和分配伪终端,这种方式适合需要在后台运行容器并保持交互能力的场景... 目录docker运行时-itd参数是什么意思1. -i(或 --interactive)2. -t(或 --

pycharm远程连接服务器运行pytorch的过程详解

《pycharm远程连接服务器运行pytorch的过程详解》:本文主要介绍在Linux环境下使用Anaconda管理不同版本的Python环境,并通过PyCharm远程连接服务器来运行PyTorc... 目录linux部署pytorch背景介绍Anaconda安装Linux安装pytorch虚拟环境安装cu