当前位置:   article > 正文

理解Python中Sanic与async/await_sanic async

sanic async
  • Python异步编程演化

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

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

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

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

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

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

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

  • Sonic Request对象

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

    属性使用方式意义
    jsonrequest.json当客户端POST来的数据是json格式时,访问json数据
    argsrequest.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文档
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/136916
推荐阅读
相关标签
  

闽ICP备14008679号