理解Python中Sanic与async/await

  • Python异步编程演化

    Python版本 关键字 作用
    3.4 asyncio 支持异步IO的标准库
    3.5 async/await 语法糖,增加异步编程友好度
    3.6 稳定版asyncio
  • Sanic

    Sanic是一个支持async/await语法的异步无阻塞框架。

    Sanic使用uvloop作为asyncio的事件循环:

    • 关于uvloop参见《理解Sanic中的uvloop》;

    • 关于事件循环参见《理解Python异步中的事件循环(asyncio管理事件循环)》;

    • 关于结构的具体步骤,参见2;

    Sanic处理函数必须要使用async def语法定义,因为他们是异步函数

  • Sonic Request对象

    包含了客户端(浏览器)发过来的HTTP请求的各类数据。包含以下属性:

    属性 使用方式 意义
    json request.json 当客户端POST来的数据是json格式时,访问json数据
    args request.args 查询字符串变量,即URL中问号?机器后面的部分
    files 字典 拥有name、body和type的文件对象的字典
    form 字典 以POST方式传递的form变量
    body 字节串 POST的原始数据

    其它还有:headersmethodipportsocketappurlschemehostpathquery_stringuri_templatetoken

    request对象是web应用要处理的对象,它包含了客户端(浏览器)的请求数据,通过它的各种属性来访问这些请求数据。

  • sanic.response子模块

    用于生成HTTP响应,可以生成纯文本(Plain Text,response.text())、HTML、JSON、文件(File)、数据流(Streaming)、文件流(File Streaming)、重定向(Redirect)、生数据(Raw)。

    所有返回的响应都是一个HTTPResponse类(或StreamingHTTPRsponse类),两者都派生自BaseHTTPResponse类。

  • 关于路由

  • url_for方法建立URL

    基于处理函数名来生成URL,类似eval对字符串的处理,当然并不一样。

  • WebSocket路由

    通过@app.websocket装饰器或app.add_websocket_route方法定义。

    websocekt路由的处理函数有两个参数:request、websocket协议对象(有send、recv两个方法)

  • Reference

  1. Sanic教程:快速开始
  2. 使用Python进行并发编程-asyncio篇(三)
  3. 猿人学Python
  4. Sanic文档

你可能感兴趣的:(小白学Python)