zoukankan      html  css  js  c++  java
  • 异步处理的框架Sanic的使用方法和小技巧

    Sanic是异步处理的框架,运用Sanic可以开发快速异步响应的web程序。想必大家看到这个都会比较期待和兴奋。

    那么如何使用Sanic来实现快速响应呢?我们先来看一看Sanic的基本介绍。

    Sanic类似Flask、只支持Python 3.5+ 版本的web 服务器,运行速度更快。在类似Flask的基础上,Sanic支持异步请求处理,你可以使用Python 3.5 中全新而又亮眼的 async/await 语法,使你的代码快速。

    下面是一个最简单的Sanic Web 程序:

    from sanic import Sanic
    from sanic.response import json
    
    app = Sanic()
    
    @app.route("/")
    async def test(request):
    return json({"hello": "world"})
    
    if __name__ == "__main__":
        app.run(host="0.0.0.0", port=8000)

    以上代码显示了Sanic的基本用法:

    • 全局生成一个Sanic对象:app = Sanic()
    • Web路由由装饰器@app.route()管理,也可以通过url_for()、add_route()指定(详见文档)
    • 请求响应函数用async声明进行异步处理,输入必须有request对象,返回response对象

    什么时候使用Blueprint?

    如果网站很复杂,路由路径很多,全部写在一个文件里面会比较复杂,这时候可以使用Blueprint,把不同功能写到不同blueprint文件里面,让整个代码结构逻辑更清晰

    Class-Based Views

    如果你用过tornado,一定对它用类处理请求的方式印象深刻,对同一个路由路径分别处理GET、POST、DETET等请求方式时,只要实现该类的几个不同方法即可,让整个代码的逻辑结构更清晰。同样,Sanic也提供了基于类的处理方式: HTTPMethodView

    Jinja网页模板强大功能

    Jinja具有快速强大的html模板渲染能力,是很多Python Web框架首选的html模板处理器。Sanic没有实现自己的模板处理,但可以把Jinja融入进来: sanic_jinja2

    i18n国际化处理

    Web网站经常要同时支持多种语言,这个时候就要遇到国际化处理的问题,这方便也有模块把Babel集成进来: sanic_babel

    小技巧:

    你针对路由路径 ‘/product’ 写了Blueprint bp_product, 但要支持en, zh, jp三种语言路径,即: /en/product, /zh/product, /jp/product, 你该怎么做呢?

    在一个循环里为每种语言注册该路径:

    for lang in ['en', 'zh', 'jp']:
    
        app.blueprint(bp_product, url_prefix='/%s' % lang)

    MySQL读写

    Sanic是异步处理的框架,读写数据库MySQL当然也要用异步IO的方式,才能体系异步的高效。aiomysql就是基于pymysql实现的异步读写MySQL的数据库模块,同样有模块为sanic因一波封装了aiomysql,使得MySQL读写更加方便,它就是: sanicdb

    看完是不是觉得很厉害的样子,头脑有没有灵光闪显的感jio?

    文章首发于我的技术博客猿人学Python基础教程 

  • 相关阅读:
    python实现Socket通信原理
    SSL加密原理
    HackTheBox实战
    wireshark实战应用(长期更新,工作随笔)
    DNS域传输漏洞复现
    网站开发语言判断
    Linux:Day39(上) mysql基础
    Linux:Day38(下)
    Linux:Day38(上)
    Linux:Day37(上)
  • 原文地址:https://www.cnblogs.com/amiza/p/10329636.html
Copyright © 2011-2022 走看看