av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python異步Web框架sanic的實(shí)現(xiàn)

瀏覽:4日期:2022-07-27 11:02:45

我們繼續(xù)學(xué)習(xí)Python異步編程,這里將介紹異步Web框架sanic,為什么不是tornado?從框架的易用性來(lái)說(shuō),F(xiàn)lask要遠(yuǎn)遠(yuǎn)比tornado簡(jiǎn)單,可惜flask不支持異步,而sanic就是類似Flask語(yǔ)法的異步框架。

github:https://github.com/huge-success/sanic

不過sanic對(duì)環(huán)境有要求:

macOS/linux python 3.6+

不過,我在macOS上安裝 sanic 還是踩了坑。依賴庫(kù)ujson一直安裝失敗。最后不得不卸載官方python,安裝 miniconda(第三方Python安裝包,集成了一些額外的工具)。

安裝 sanic

> pip3 install sanic

sanic 開發(fā)第一個(gè)例子

編寫官方的第一個(gè)例子hello.py:

from sanic import Sanicfrom sanic.response import jsonfrom sanic.exceptions import NotFoundapp = Sanic(name='pyapp')@app.route(’/’)async def test(request): return json({’hello’: ’world’})if __name__ == ’__main__’: app.error_handler.add( NotFound, lambda r, e: sanic.response.empty(status=404) ) app.run(host=’0.0.0.0’, port=8000)

運(yùn)行上面的程序:

> python3 hello.py

[2020-04-21 23:12:02 +0800] [18487] [INFO] Goin Fast @ http://0.0.0.0:8000[2020-04-21 23:12:02 +0800] [18487] [INFO] Starting worker [18487]

通過瀏覽器訪問:http://localhost:8000/

python異步Web框架sanic的實(shí)現(xiàn)

請(qǐng)求堵塞

針對(duì)上面的例子,假設(shè)test() 視圖函數(shù)的處理需要5秒鐘,那么請(qǐng)求就堵塞了。

from time import sleepapp = Sanic(name='pyapp')@app.route(’/’)async def test(request): sleep(5) return json({’hello’: ’world’})

重啟服務(wù),通過瀏覽器發(fā)送請(qǐng)求,我們發(fā)現(xiàn)請(qǐng)求耗時(shí)5秒,這顯然對(duì)用戶就不能忍受的。

python異步Web框架sanic的實(shí)現(xiàn)

異步非堵塞

所以,我們要實(shí)現(xiàn)異步調(diào)用,修改后的完整代碼如下:

import asynciofrom sanic import Sanicfrom sanic.response import jsonfrom sanic.exceptions import NotFoundfrom time import sleep, ctimeapp = Sanic(name='pyapp')async def task_sleep(): print(’sleep before’, ctime()) await asyncio.sleep(5) print(’sleep after’, ctime())@app.route(’/’)async def test(request): myLoop = request.app.loop myLoop.create_task(task_sleep()) return json({’hello’: ’world’})if __name__ == ’__main__’: app.error_handler.add( NotFound, lambda r, e: sanic.response.empty(status=404) ) app.run(host=’0.0.0.0’, port=8000)

關(guān)于python異步的使用參考上一篇文章,重新啟動(dòng)服務(wù)。這次前端就不在堵塞了。

python異步Web框架sanic的實(shí)現(xiàn)

如果看 sanic 的運(yùn)行日志:

[2020-04-21 23:43:14 +0800] - (sanic.access)[INFO][127.0.0.1:57521]: GET http://localhost:8000/ 200 17sleep before Tue Apr 21 23:43:14 2020sleep after Tue Apr 21 23:43:19 2020

他仍然在執(zhí)行,但不會(huì)堵塞test()視圖函數(shù)的響應(yīng)。

思考:假如我的需求是:請(qǐng)求之后先告訴我已經(jīng)處理了,然后默默的去處理,什么時(shí)候處理來(lái)再主動(dòng)把處理的結(jié)果告訴。那么這就需要用到 websocket了。

到此這篇關(guān)于python異步Web框架sanic的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)python 異步 sanic內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 天天爽天天干 | 久久人人网 | 丁香婷婷综合激情五月色 | 第四色影音先锋 | 中文字幕在线电影观看 | 国产精品日韩欧美一区二区三区 | 91精品国产91久久久 | 一级片视频免费 | 欧美精品在线一区 | 尤物在线 | 亚洲国产一区在线 | 精品久久久久久18免费网站 | 亚洲视频一区在线 | 欧美日韩精品一区二区 | 国产精品乱码一区二区三区 | 亚洲成人中文字幕 | 欧美九九九 | 亚洲h在线观看 | 一级片在线视频 | 国产一区二 | 国产福利在线播放麻豆 | 欧美成年人视频在线观看 | 91精品国产乱码久久久久久久久 | 国产视频一区二区 | 欧美日韩电影一区二区 | 久草精品在线 | 99久久国产精 | 久久精品综合 | 日本淫视频 | 日韩欧美成人一区二区三区 | 免费黄色的视频 | 日日久| www.蜜桃av | 成人精品一区亚洲午夜久久久 | av免费网址 | 日本久久www成人免 成人久久久久 | 日韩理论电影在线观看 | 日韩中文字幕在线视频观看 | 日韩精品免费在线观看 | 亚洲精品久久久久国产 | 在线视频一区二区三区 |