Tornado 学习笔记

易智联LM401模块学习(四)——双串口收发 串口的发送和接受有三种方式,分别是阻塞发送和接收(轮询)、中断方式发送和接收、DMA方式发送和接收。这里我使用阻塞+中断的方式实现双串口通信。简单的串口收发。 阅读详情
 交流QQ群:26651479


一、安装 Tornado
    目前最新版本的下载: http://github.com/downloads/facebook/tornado/tornado-1.2.1.tar.gz

    解压之后,进入解压的目录,执行:
        python setup.py build
        python setup.py install

    如果开发环境是py2.6+,也可以简单的把tornado目录添加到py的环境变量 PYTHONPATH 中,这样就不需要编译setup.py(也就是不用安装的意思)

    安装条件:
    在py2.5 2.6 2.7上进行过测试,如果要使用 tornado 的全部功能,必须安装 PycURL (版本7.18.2 或者以上),对py2.5必须安装JSON支持组件simplejson,py2.6+以上的JSON支持已经在标准库内实现。


二、模块列表和简介:
    最重要的模块是web模块,他作为web框架包含了 Tornado 包内大部分的有用的东西,其他的工具和模块让web变的更有用

    主模块
        web – 用来创建FriendFeed的web框架,他集成(混合)了大部分 Tornado 的重要功能特征
        escape – XHTML, JSON, and URL 编解码方法
        database -对MySQLdb的简单封装,让mysql的使用更方便
        template – 基于python的模板渲染语言
        httpclient – 一个非阻塞http客户端,设计它用来和web和httpserver协同工作
        auth – 第三方认证和认证方案的实现 (Google OpenID/OAuth, Facebook Platform, Yahoo BBAuth, FriendFeed OpenID/OAuth, Twitter OAuth)
        locale – 本地化和翻译支持
        options – 命令行和配置文件解析工具,为了webserver环境做了优化

    底层模块
        httpserver – A very simple HTTP server built on which web is built
        iostream – A simple wrapper around non-blocking sockets to aide common reading and writing patterns
        ioloop – Core I/O loop

    随机模块:
        s3server – 一个实现了Amazon S3接口的web服务器,基于本地文件存储


三、Tornado使用概览
    一个 Tornado 应用会把URL或者URL模式映射到 tornado.web.RequestHandler 的子类,这些子类定义 get 和 set 方法来处理对应URL的GET和POST请求。


http://www.yaozinan.com/2011/04/tornado%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/?replytocom=15

 

==== 范例1 ==================================================
import tornado
import tornado.httpserver
import tornado.ioloop
import tornado.web
import os.path

# 申明一个 add 函数,提供给模板文件使用
def add(x, y):
    return (x+y)

# 网页访问处理
class MainHandler(tornado.web.RequestHandler):
    def get(self):
        items = ["item1","item2","item3", '222']
        # 第一个参数是模板文件,后面不但可以传递参数,还可以传递函数,可扩展性很好而且很强大。
        self.render("templates.html", items=items, add=add)

class StoryHandler(tornado.web.RequestHandler):
    def post(self, story_id):
        self.set_header("Content-Type", "text/plain") # 设置头部信息
        self.write("You wrote " + self.get_argument("message")) # get_argument方法接收参数

        # 不使用模板,则可直接把内容 write 出去
        self.write("You requested the story " + story_id)
        # 可以多次调用 write,把要显示的内容追加上去
        self.write("<input type='button' value='返回' onclick='window.history.back();'/>")

# 更多的访问处理方式
class IndexHandler(tornado.web.RequestHandler):
    # 处理post过来的数据,接收 service_method, argv 两个URL参数
    def post(self, service_method='', argv=''):
        print('method:POST...')
        print('service_method:' + service_method)

        # 参数处理,按斜杠划分成list
        if argv:
            if argv.startswith('/'): argv = argv[1:]
            if argv.endswith('/'): argv = argv[:-1]
        argv = argv.split('/') if argv else []
        print('argv:' + str(argv))

        print('request.arguments:' + str(self.request.arguments)) # form 表单提交的信息
        print('application:' + str(self.application))

        items = ["item1","item2","item3", 'dfsdfsd']
        self.render("templates.html", items=items, add=add)

    # 处理get提交过来的数据
    def get(self, service_method='', argv=''):
        print('method:GET....')
        self.post(service_method, argv)

    # post 和 get 处理之后的调用; data 是处理模板后的内容,string类型,调用self.write或者什么都不显示时为None
    def finish(self, data=None):
        print('finish   data:\n' + str(data))
        super(IndexHandler, self).finish(data)


# 找不到页面的处理
class NotFoundHandler(tornado.web.RequestHandler):
    def prepare(self):
        NOTFOUND_404 = "404.html" # 404文件地址
        if os.path.exists(NOTFOUND_404):
            #self.set_status(404) # 设 404 状态,浏览器可能会跳转到自己定义的找不到页面,要想全部显示一样就不要设置此状态
            self.render(NOTFOUND_404, url = self.request.full_url())
        else:
            self.send_error(404)


# 网址访问的配置
application = tornado.web.Application([
    (r"/", MainHandler),
    (r"/story/([0-9]+)", StoryHandler),
    (r'^/index/(?P<service_method>.*?)(?P<argv>/.*?)?', IndexHandler), # service_method, argv 两个URL参数可传递给函数处理
    (r"/.*", NotFoundHandler), # 找不到页面,必须放在最后
])

if __name__ == "__main__":
    http_server = tornado.httpserver.HTTPServer(application) # 加载配置
    http_server.listen(8088) # 监听端口号
    tornado.ioloop.IOLoop.instance().start() # 启动
    # 测试网址:
    # http://localhost:8088/
    # http://127.0.0.1:8088/story/555
    # http://127.0.0.1:8088/index/test/test2/kkkk

 


 

大模型多智能体协作面试题及参考答案 在多智能体系统里,代理定义自身目标或效用函数的过程与系统架构、应用场景紧密相关。从本质上讲,目标是代理行为的导向,而效用函数则是对目标达成程度的量化评估。代理通常依据自身角色、系统全局需求以及与其他代理的交互关系来确立目标。比如在合作型 MAS 中,代理目标可能需要与全局目标对齐,像多个物流机器人协作完成货物配送时,每个机器人的目标会围绕 “高效完成分配任务”“避免路径冲突” 等展开,其效用函数可能涉及任务完成时间、能耗等指标的加权求和。目标定义的方式存在多种类型。 阅读详情

相关推荐

异次元发卡最新漏洞0day(XSS组合拳)

异次元商店头像上传处存在存储型XSS注入(user、admin均存在)。其中,user处有过滤,admin无。 将恶意脚本插入后,管理员访问用户管理页面即可执行恶意脚本。 恶意脚本执行后,会新增一个管理员用户,进而获得权限。鉴于漏洞还没有泛滥,而且很多站都有漏洞。EXP暂时不公开。需要学习可以加入知识星球

白昼小丑的博客 4591

tornado finish和write区别

简介 finish和write都可以将后端的数据传输到前端。他们有啥差别嘞。 该项目的github地址: tornado_learning.git 例子 代码apps/hello/write_finish_handler.py from tornado_learning.handler import BaseHandler import time class Write_Finish_Handl...

Crazy博客 3636

多尺度Transformer+特征融合新范式,算力减半精度猛增

在大模型时代,多尺度特征融合与Transformer架构的结合正成为研究热点。多尺度特征融合能够捕捉数据在不同尺度上的关键信息,而Transformer架构凭借其强大的并行处理能力和对长距离依赖的建模能力,为复杂数据处理提供了新的思路。这种结合在处理多模态数据时展现出巨大潜力。

Tulingxueshu的博客 1057

02tornado输入输出

输出 write可接受对象类型 字符串 二进制字符串b 字典 Unicode json flush 缓冲区 render 返回html redirect 跳转路由 finish() 获取请求信息 self.request self.request可以获取到的请求信息 输入 get_argument get_arguments 获取 URL 数据 获取 body 数据 ge...

qq_14993591的博客 342

手把手解决GD32H759I-EVAL以太网通信三大坑:IP冲突、端口绑定失败、LWIP内存泄漏

本文针对GD32H759I-EVAL开发板在以太网通信调试中常见的三大难题——IP地址冲突、端口绑定失败和LWIP内存泄漏,提供了详细的实战排障指南。文章深入分析了问题根源,并给出了具体的网络配置、端口管理策略和内存泄漏检测方法,帮助开发者快速定位并解决嵌入式网络通信中的棘手问题,确保系统稳定运行。

weixin_29196315的博客 139

嵌入式Linux网络调试:YT8531/YT8521 PHY驱动移植与设备树配置避坑指南

本文深入解析嵌入式Linux系统中YT8531/YT8521 PHY驱动移植与设备树配置的关键技术,涵盖内核驱动适配、RGMII接口时序调整及常见问题排查。针对Motorcomm千兆以太网PHY芯片,提供详细的设备树配置示例和调试技巧,帮助开发者规避典型设计陷阱,确保网络功能稳定运行。

weixin_42525632的博客 672

Tornado提升之响应与输出

响应输出 write(chunk) 作用:将chunk(服务器给浏览器的数据)写到输出缓冲区,然后tornado-IOLoop自动将缓冲区的内容转移到浏览器 finish(chunk) 刷新缓冲区 利用write()方法写Json数据(使用第二种方式) 注:页面接受到的时content= html类型的数据 import json class json1Handler(RequestHandler): def get(self,*args,**kwargs):

qq_45672137的博客 418

使用moveit!控制真实机械臂(5)——编写真实机械臂节点中的action服务程序

上一篇文章中,我们简要介绍了ROS中action的基本知识,为了控制真实机械臂,我们已经修改了moveit配置文件,使得moveti启动后具备一个control_msgs::FollowJointTrajectoryAction类型的action客户端,接下来,我们完成该类型action的另一半,编写C++程序来实现action的服务端。由于底层机器人控制程序一般差别都很大,这里展示的只是编程要点...

爱学习的草莓熊 1万+

Tornado入门

Tornado # Tornado self.write() 适用于直接返回网页,也可用于前后端交互 # self.get_argument() 适用于get、post方法 # self.get_arguments() 获取多选数据,获取的值为列表形式 # self.request.body 获取body中的数据(常为json),数据为二进制,使用utf8解码(XX.decode('utf8')) 简易的网页结构 import json import tornado.ioloop

Mrm的博客 273

【scratch音乐课】天空之城:音符与节拍、消息与链表

scratch是一个非常小巧的青少年编程工具,自带程序编写语句,积木式语句非常直观、易用,可创作数学、科学、音乐、绘画等方面作品。本文用scratch“演奏”一首大家非常熟悉的《天空之城》,并向大家介绍一些基本乐理知识,以及scratch中消息、链表的使用。

★·°立芯;︶︵︶ 1万+

海康VisionMaster与西门子PLC1200进行S7通信

通信是连通算法平台和外部设备的重要渠道,在海康VisionMaster算法平台中既支持外部数据的读入也支持数据的写出,当通信构建起来以后既可以把软件处理结果发送给外界,又可以通过外界发送字符来触发相机拍照或者软件运行。 本文以西门子PLC1200作为外部设备为例,讲解海康VisionMaster与西门子PLC1200进行S7通信。......

haier123888的博客 1万+

Tornado框架简介(二)

--------------------Application--------------------1、settings    1、debug=True:,设置tornado是否工作在调试模式,默认为False即工作在生产模式。当设置debug=True 后,tornado会工作在调试/开发模式,在此种模式下,可以根据设置修改tornado提供的其他几种特性    2、autoreload=Tr...

czbkzmj的博客 647

自然语言处理(扩展学习1):Scheduled Sampling(计划采样)与Teacher forcing(教师强制)

作者:安静到无声作者简介:人工智能和硬件设计博士生、优快云与阿里云开发者博客专家,多项比赛获奖者,发表SCI论文多篇。o( ̄▽ ̄)d。

安静到无声 2143

Tornado Web学习笔记---写在最前面

Torando是目前比较流行的python web开发框架 回想起自己半年前还在搞Flask和Django,现在Torando好像更好用一些,作为一名程序媛,就得随时准备好一颗接受新事物的心。 未来的这段日子打算将关于Tornado的学习笔记总结起来~ 喜欢的记得关注我哈 给我点动力  嘿嘿

婧萱 421

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

tornado学习笔记

escape模块 xhtml_escape(value:str) -> str 用来转义html xhtml_unescape(value:str) -> str 用来反转义html json_encode(value)-> str value是一个python对象 ,code成json json_decode(value:str) ->python_obj json转成一个python对象 squ

秋草正离离 491

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

个人学习笔记,不一定对。tornado 01run.py

tornado 01run.py 01run.py包含, - 1)tornado基础启动 - 2)已指定参数启动 3) 环境 VM virtualBox虚拟机软件 导入已配置好的ova文件 Linux虚拟机 ubuntu系统 进入专门py3虚拟环境    ...

yy524661388的博客 246

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

tornado学习笔记day08-tornado中的异步

概述 应为epoll主要用来解决网络的并发问题,所以tornado中的异步也是主要体现在网络的IO异步上,即异步web请求 tornado.httpclient.AsyncHTTPClient tornado提供异步web请求客户端,可以用来进行异步web请求, 这个客户端和服务端是相对来说的,当tornado的Handler去其他位置去请求资源的时候,他就是客户端 fetch(request, ...

秋叶夏风的博客 715

tornado学习笔记总结

网络层级应用层,决定传输什么数据 传输层,(TCP,IP确认与重传机制) 网络层, 数据链路层,从输入网址开始,做了什么 1、浏览器和服务器建立了一个tcp传输层通道 2、把url地址封装成http报文传输过去(http报文格式) 3、服务器返回页面数据或者其他数据 浏览器做了http的协议层

JunFeng666的博客 768

tornado模板学习笔记

Tornado模板学习 tornado是一个python编写的一个强大的、可扩展的web服务器。 Tornado包括了一个有用的模块(tornado.options)来从命令行中读取设置 Tornado的RequestHandler类有一系列有用的内建方法,包括get_argument,我们在这里从一个查询字符串中取得参数greeting的值。(如果这个参数没有出现在查询字符串中,Tornad...

不疲不倦的博客 331

tornado 学习笔记1 引言

从事软件开发这行业也快5年啦,其实从事的工作也不完全是软件开发,软件开发只是我工作中的一部分。其中包括课题研究、信息化方案设计、软件开发、信息系统监理、项目管理等工作,比较杂乱。开发的软件比较多,但是大都集中在交通行业,比如高速公路建设综合建设管理系统、交通公众出行信息服务系统、交通建设市场信用管理系统、质量监督管理系统等,大都属于业务系统跟网站建设。涉及到的开发语言主要是VB...

weixin_30414245的博客 81

python 框架tornado_python框架之 Tornado 学习笔记(一)

tornado 一个简单的服务器的例子:首先,我们需要安装 tornado ,安装比较简单:pip install tornado测试安装是否成功,可以打开python 终端,输入:importtornado.httpserver若无报错,则证明安装成功接下来就可以写一个简单的服务器了,如下:importtornado.httpserverimporttornado.ioloopi...

weixin_39955421的博客 205

Tornado web框架学习笔记

Tornado是一种 Web 服务器软件的开源版本,它是非阻塞式服务器,而且速度相当快。 一、基本操作 import tornado.ioloop import tornado.web # 模板引擎 class MainHandler(tornado.web.RequestHandler): def get(self,*args,**kwargs): # self.write('Hello world') self.render('template.html',mag='') self.redirect(

qq_44990881的博客 229

Tornado学习笔记——初识Tornado

一、Tornado是什么? Tornado是一个用Python编写的web服务器。它在处理严峻的网络流量是表现的足够强健,但在创建和编写的时候足够轻量级,并能够被用在大量的应用和工具中。 1.1 安装 在Linux下: $ curl -L -O https://github.com/facebook/tornado/archive/v3.1.0.tar.gz $ tar xvzf v3.1.0.t...

weixin_39944891的博客 292

Tornado 学习笔记 Tornado基础 1

内容原子官方文档: Tornado基础Tornado是一套web框架和异步网络功能库,使用非阻塞式IO,可支持数万个活动连接。支持长活跃连接,支持long polling长连接,支持WebSockets。A web framework (includingRequestHandlerwhich is subclassed to create web applicati...

weixin_33938733的博客 184

Python学习笔记——Tornado深入

目录 3.1 Application settings 路由映射 3.2 输入 1. 获取查询字符串参数 2. 获取请求体参数 3. 前两类方法的整合 思考 4. 关于请求的其他信息 5. 正则提取uri 3.3 输出 1. write(chunk) 2. set_header(name, value) 3. set_default_headers() 4. set_...

唯恋殊雨的博客 3569

Tornado 学习笔记 Tornado基础 2

内容原子官方文档:Tornado基础模板和UI模板可以使用多种模板语言,通过RequestHandler.render整合到系统中,简单渲染字符串通过RequestHandler.write配置模板默认会在py文件相同目录查找模板,在其他位置可以使用template_pathApplicationsetting 或者覆盖RequestHandler.get_templ...

weixin_34175509的博客 131
上一篇: Django 学习笔记
下一篇: MongoDB 学习笔记(纯数据库操作)
daillo
博客等级 码龄18年 42粉丝 34原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值