1|0測試基本信息
主題:比較異步框架和同步框架在RedisIO操作的性能差異
python版本:python 3.8
數(shù)據(jù)庫:redis 5.0.7
壓測工具:locust
web框架:同步:flask 異步:starlette
請求并發(fā)量: 模擬10個用戶
服務(wù)器配置: Intel(R) i7-12700F
客戶端配置:Intel(R) i7-8700 3.20GHz
2|0flask 同步框架
flask是python中輕量級web框架,特點是靈活、輕量級、擴展性高。同時flask是一個同步框架,操作Redis使用的是官方最推薦的包redis-py。redis-py早期版本只支持同步模式,高版本中已經(jīng)支持異步模式。接口功能非常簡單,連接Redis從中讀取一個key,已經(jīng)提前寫入redis。
from flask import Flask
from redis import StrictRedis
app = Flask(__name__)
@app.route('/user')
def user_list():
redis_conn = StrictRedis(host="127.0.0.1", port=6379, decode_responses=True)
res = redis_conn.get("name")
return res
if __name__ == '__main__':
app.run(port=8090, host="0.0.0.0")
2|1壓測結(jié)果
并發(fā)量:342
3|0starlette 異步框架
starlette 是當(dāng)下火熱的異步框架fastapi依賴的唯二模塊之一,主要用于異步請求的處理。redis-py 既支持同步模式又支持異步模式,所以在starlette這個異步框架中就使用其異步模式。
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from starlette.routing import Route
from uvicorn.main import run
from redis.asyncio import StrictRedis
async def user(request):
redis_conn = StrictRedis(host="127.0.0.1", port=6379, decode_responses=True)
res = await redis_conn.get("name")
await redis_conn.close()
return JSONResponse(res)
app = Starlette(debug=True, routes=[Route('/user', user),])
if __name__ == "__main__":
run(app, host="0.0.0.0")
3|1壓測結(jié)果
并發(fā)量:1361
?
4|0對比
并發(fā)曲線圖對比:
參數(shù)對比:
框架 | Redis IO | 純框架無IO | 文件IO | 數(shù)據(jù)庫IO |
---|---|---|---|---|
flask | 315 | 463 | 453 | 225 |
starlette | 1361 | 1539 | 1538 | 1496 |
性能比(異步/同步) | 4.3 | 3.3 | 3.4 | 6.6 |
5|0總結(jié)
在Redis IO方面,異步框架的性能是同步框架的4.3倍左右,和文件IO、數(shù)據(jù)庫IO大體一致。橫向和數(shù)據(jù)庫IO比較略有下降,多次測試確實如此,猜測和redis-py模塊的異步模式有關(guān)。
本篇是對比系列最后一篇。從異步密切相關(guān)的IO任務(wù)對比中可以切實看出異步編程的并發(fā)量比較高,后續(xù)篇幅中將講解python中異步編程的原理和使用。文章來源:http://www.zghlxwxcb.cn/news/detail-498348.html
加油吧,測試人!如果你需要提升規(guī)劃,那就行動吧,在路上總比在起點觀望的要好。未來的你肯定會感謝現(xiàn)在拼命的自己!
?文章來源地址http://www.zghlxwxcb.cn/news/detail-498348.html
到了這里,關(guān)于Python異步編程之web框架 異步vs同步 Redis并發(fā)對比的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!