python--tornado服务

这篇具有很好参考价值的文章主要介绍了python--tornado服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

    Tornado是一个基于非阻塞I/O的Web框架,具有可以处理大量并发连接,适用于高并发的场景的高性能,轻量级和异步支持的优点。

    本篇主要展示了使用 tornado http post 和 get 服务

二、代码

 tornado http post 和 get 服务

# -*- coding: utf-8 -*-
"""
Created on Wed Nov  2 09:52:49 2022

@author: junyang.zhang
"""

import tornado.ioloop
from tornado.web import RequestHandler , Application
from tornado.httpserver import HTTPServer
from tornado.options import options,define

import json
import time
 

 

class ClassA( RequestHandler  ):
    
    def get(self):
        value1 = self.get_argument('key1')
        value2 = self.get_argument('key2')  
        
        print(  "class A get receive"  ,  value1   , value2  )
        self.write( "class A get response" )
        
    def post(self):
        data = json.loads(  self.request.body )
        
        print( "class A post receive " , data )
        
        result = {
            "ok":0,
            "message": "class A post response!",
        }
        self.write(json.dumps(result))
        
class ClassB( RequestHandler ):
    
    def get(self):
        #这个实际是从url 获取参数
        query_data = {}
        for key in self.request.arguments.keys():
            query_data[key] = self.get_argument(key)
            
        print(  "class B get receive"  ,   query_data  )
        self.write( "class B get response" )
        
    def post(self):
        #对应客户端的
        #这个实际可以从 body 获取
        data = tornado.escape.json_decode(self.request.body)
        
        print( "class B post receive " , data )
  
        
        result = {
            "ok":0,
            "message": "class B post response!",
        }
        self.write(json.dumps(result))

if __name__=="__main__":
    options.parse_command_line()
    handlers_routes = [
        ( r"/a" , ClassA ) , ( r"/b" , ClassB ) 
        ]
    app = Application( handlers= handlers_routes )
    
    http_server = HTTPServer(app)
    address = '127.0.0.1'
    #address = '10.2.3.118'
    port = 20437
    #port = 80
    http_server.listen( port )
    print("Listening: %s:%s" % (address, port))
    
    #tornado.ioloop.IOLoop.current().start()  #暂时没办法,只能是啥端口的进程
    
    try:
        tornado.ioloop.IOLoop.instance().start()
    # signal : CTRL + BREAK on windows or CTRL + C on linux
    except KeyboardInterrupt:
        tornado.ioloop.IOLoop.instance().stop() 
    
    

下面的client端向分别向2个服务发送get请求和post请求,服务将处理请求并返回

# -*- coding: utf-8 -*-
"""
Created on Fri Nov 25 15:17:09 2022

@author: junyang.zhang
"""

#这是个 post 请求的例子
import requests



payload = {'key1': 1 , 'key2': 'value2'}
resp = requests.get('http://127.0.0.1:20437/a', params=payload , timeout=0.5)
print(resp.text  )


data = {
    'name': 'lucy',
    'age': 12 ,
    "a" : {"a" : "1" , "b" :2 }  #比较复杂,则用post
}
res = requests.post('http://127.0.0.1:20437/a', json=data)
print(res.text)




payload = {'key1': 3 , 'key2': 'value4'}
resp = requests.get('http://127.0.0.1:20437/b', params=payload , timeout=0.5)
print(resp.text  )


data = {
    'name': 'lili',
    'age': 22 ,
    "a" : {"a" : "2" , "b" :3 }  #比较复杂,则用post
}
res = requests.post('http://127.0.0.1:20437/b', json=data)
print(res.text)

三、结果

服务端输出:

python--tornado服务,tornado,tornado示例

 客户端输出

python--tornado服务,tornado,tornado示例

 文章来源地址https://www.toymoban.com/news/detail-534950.html

到了这里,关于python--tornado服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 试玩python的web框架 flask、fastapi、tornado、django

    先解决一下IDEA使用远程解释器,本地代码编辑无法代码提示问题 常用的4个Python Web框架对比 注意 1.这里使用linux 192.168.72.126上远程解释器,需要 /usr/bin/pip3 install flask ,host参数不要使用localhost/127.0.0.1,即只监听本地的访问,会导致windows无法访问到flask app 2.运行方式增加main方法

    2024年02月17日
    浏览(58)
  • 【websocket - Tornado】简易聊天应用

    项目测试的过程中需要自己搭建一个webscoket站点,确保此类服务接入后台系统后访问不受影响。python的服务框架常用的有Flask、Django、Tornado,每个框架的侧重点不同,导致使用的场景就会有所差异。 Flask轻量级,采用常规的同步编程方式,需要安装其他模块辅助,主要用于传

    2024年02月14日
    浏览(34)
  • Flask、Django和Tornado怎么选

    Flask、Django和Tornado是三个常用的PythonWeb框架,它们在设计理念、功能和适用场景上有所不同。下面是它们的对比: 1. 设计理念: - Flask是一个轻量级的框架,它提供了最基本的功能,但是具有高度的灵活性和可扩展性。它鼓励开发者使用自己喜欢的库和工具来完成特定任务

    2024年04月12日
    浏览(35)
  • 9-tornado-Template优化方法、个人信息案例、tornado中ORM的使用(peewee的使用、peewee_async)、WTForms的使用

    common/base.html shop2.html Tornado中支持累死Vue中的组件功能,就是也公共的内容提取出来当成组件。 具体的使用方式是用 tornado.web.UIModule 环境搭建 在网站中,少了数据CRUD的操作,但在tornado中,我们知道若想操作的话尽量使用异步的操作,这样效率才会高。 那应该如何编写呢,

    2024年02月04日
    浏览(31)
  • 2-Django、Flask和Tornado三大主流框架对比

    在Python的web开发框架中,目前使用量最高的几个是 Django 、 Flask 和 Tornado , 经常会有人拿这几个对比,相信大家的初步印象应该是 Django 大而全、 Flask 小而精、 Tornado 性能高。 了解常用框架 Django 主要特点是大而全,集成了很多组件,例如: Model 、 Admin 、 Form 等等, 不管你用得

    2024年02月04日
    浏览(43)
  • 6-tornado配置文件的使用(命令行解析、文件设置)

    使用 tornado.options.define 前定义,通常在模块的顶层。 然后,可以将这些选项作为以下属性的属性进行访问 tornado.options.options 但要解析命令行参数时,需要使用 tornado.options.parse_command_line 来解析参数 具体代码如下: 创建文件 server.conf ,将必要的参数直接写入即可 设置好文件

    2024年02月04日
    浏览(29)
  • BUUCTF-MD5强弱比较-MD5()的万能密码-tornado框架注入-中文电码

    第六周 第三次 目录 学习到的知识 1.MD5强弱比较可以都可以使用数组绕过 2.基于MD5()的万能密码    ffifdyop WEB [BJDCTF2020]Easy MD5 ​编辑[护网杯 2018]easy_tornado Crypto 信息化时代的步伐 凯撒?替换?呵呵! Misc 神秘龙卷风 1.MD5强弱比较可以都可以使用数组绕过 2.基于MD5()的万能密码

    2023年04月12日
    浏览(54)
  • 8-tornado中模板的使用(通过字符串返回、通过模板Template返回、通过模板render返回)、模板案例

    tornado.template 一个简单的模板系统,将模板编译为Python代码。 基本用法如下 * 前端 后端

    2024年02月04日
    浏览(36)
  • 项目示例 - 3.服务网关 - 3.Gateway

    关联知识: 分布式微服务 - 3.服务网关 - 4.Gateway 内容提要: 基本使用 自定义断言 自定义局部、全局过滤器 建Module:微服务起名为gateway-server 改pom:引入以下依赖 写yml:在resources目录下创建application.yml文件,并做以下配置 主启动:在src下创建如下主启动类 测试: 启动nac

    2024年03月14日
    浏览(61)
  • 项目示例 - 2.服务注册 - 1.Eureka

    关联知识: 分布式微服务 - 2.服务注册 - 2.Eureka 内容提要 服务注册基本使用 eureka server集群、eureka client集群 Eureka Server 建Module:微服务起名为eureka-server 改pom:引入以下依赖 写yml:在resources目录下创建application.yml文件,并做以下配置 主启动:在src下创建如下主启动类 测试:

    2024年03月15日
    浏览(25)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包