亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

python異步Web框架sanic的實現

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

我們繼續學習Python異步編程,這里將介紹異步Web框架sanic,為什么不是tornado?從框架的易用性來說,Flask要遠遠比tornado簡單,可惜flask不支持異步,而sanic就是類似Flask語法的異步框架。

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

不過sanic對環境有要求:

macOS/linux python 3.6+

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

安裝 sanic

> pip3 install sanic

sanic 開發第一個例子

編寫官方的第一個例子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)

運行上面的程序:

> 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的實現

請求堵塞

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

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

重啟服務,通過瀏覽器發送請求,我們發現請求耗時5秒,這顯然對用戶就不能忍受的。

python異步Web框架sanic的實現

異步非堵塞

所以,我們要實現異步調用,修改后的完整代碼如下:

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)

關于python異步的使用參考上一篇文章,重新啟動服務。這次前端就不在堵塞了。

python異步Web框架sanic的實現

如果看 sanic 的運行日志:

[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

他仍然在執行,但不會堵塞test()視圖函數的響應。

思考:假如我的需求是:請求之后先告訴我已經處理了,然后默默的去處理,什么時候處理來再主動把處理的結果告訴。那么這就需要用到 websocket了。

到此這篇關于python異步Web框架sanic的實現的文章就介紹到這了,更多相關python 異步 sanic內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 日本精品高清一区二区不卡 | 欧美做爰野外在线视频观看 | 欧美日韩一区二区三区在线视频 | 欧美全免费aaaaaa特黄在线 | 免费99视频有精品视频高清 | 国产成人精品男人免费 | 美女黄色在线 | 视频在线二区 | 亚洲视频三级 | 亚洲美女视频在线观看 | 韩国日本一级片 | 国产高清在线观看视频手机版 | 综合亚洲欧美日韩一区二区 | 成人综合网址 | 三级a黄 | 日韩精品三级 | 成人性动漫高清免费观看网址 | 不卡一级aaa全黄毛片 | 亚洲欧美一区二区三区在线 | 欧美日韩国产在线人成dvd | 欧美成人性色xxxxx视频大 | a级毛片免费观看在线播放 a级毛片免费看 | 国产精品v在线播放观看 | 成人看片在线观看免费 | 亚洲国产精品自在现线让你爽 | 精品视频一区二区三区四区 | 成人黄页 | 国内精品久久影院 | 日本不卡一区二区三区在线观看 | 亚洲bt欧美bt国产bt | 国产成人高清视频在线观看免费97 | 欧美 亚洲 另类 自拍 在线 | 亚洲综合精品成人 | 亚洲成a人 | 国产成人麻豆tv在线观看 | 91av视频 | 日本三级日产三级国产三级 | 天天亚洲 | 欧美日韩一区二区在线观看视频 | 亚洲一区二区三区四区在线 | 日韩一区二区三区四区 |