当前位置: 首页 > 工具软件 > Tornado > 使用案例 >

【Python】tornado

丁豪
2023-12-01

1,简介
    Tornado 是一个异步非阻塞的Python web框架,起初由 FriendFeed 开发. 通过使用非阻塞网络I/O, Tornado可以支撑上万级的连接,处理 长连接, WebSockets ,和其他需要与每个用户保持长久连接的应用.

2,安装

conda install tornado

3,应用

import os
from datetime import datetime, timedelta

import tornado.ioloop
import tornado.web
from tornado.options import define, options, parse_command_line
import pymysql

# 定义默认启动的端口port为80
define('port', default=8080, type=int)


class MainHandler(tornado.web.RequestHandler): # 请求进入设置
    def initialize(self):
        print('初始化')

    def prepare(self):
        print('prepare')

    def get(self):
        name = self.get_argument("name")
        token = self.request.headers.get("token")
        self.write(name + " " + token)
        self.write('查询数据')

    def post(self):
        # 使用request属性
        # 取出客户端提交的json字符串
        jsonbyte = self.request.body
        print('二进制格式json字符串:', jsonbyte)
        jsonstr = jsonbyte.decode('utf-8') # 解码
        print('json字符串:', jsonstr)

        # 从json字符串转换为json对象,然后利用json对象提供的API
        # 从json字符串中取出想要的内容
        jsonobj = json.loads(jsonstr)
        day = jsonobj.get('day') # 取出值
        self.write('day = {}'.format(day))
        self.write('post方式请求')
        self.write('新增数据')

    def delete(self, month, year, day):
        self.write('删除数据')

    def patch(self, month, year, day):
        self.write('修改部分')

    def put(self, month, year, day):
        self.write('修改全部')

    def on_finish(self):
        print('请求结束')

def make_app():
    # handlers参数中定义路由匹配地址
    return tornado.web.Application(handlers=[
        (r'/', MainHandler)],
 template_path=os.path.join(os.path.dirname(os.path.abspath(__file__)), 'templates') # 选择导航
    )

if __name__ == '__main__':
    #解析启动命令, python xx.py --port=端口号
    parse_command_line()
    # 启动
    app=make_app()
    # 监听端口
    app.listen(options.port)
    # 监听启动的IO实例
    tornado.ioloop.IOLoop.current().start()

4,ab压力测试

yum -y install httpd-tools # centos
sudo apt-get install apache2-utils # ubuntu
ab -V # 查看版本
ab -c 10 -n 100 http://www.myvick.cn/index.php # 同时处理100个请求并运行10次index.php
# -c 10表示并发用户数为10
# -n 100表示请求总数为100

5,参考
1,http://shouce.jb51.net/tornado/ch1.html
2,https://tornado-zh.readthedocs.io/zh/latest/

 类似资料: