最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

fastapi與django異步的并發(fā)對比分析

 更新時間:2023年03月15日 08:51:22   作者:Chise1  
這篇文章主要介紹了fastapi與django異步的并發(fā)對比分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

概述

據(jù)說fastapi是目前最快的異步框架,遂決定將其和django異步進行并發(fā)比較。

先說結(jié)果

fastapi的異步可以使整體運行速度非常均衡,不會出現(xiàn)較大波動,但是django會出現(xiàn)大量的波動問題,部分訪問速度很快,但是部分訪問速度很慢,甚至超時。

個人感覺是因為django的數(shù)據(jù)庫訪問是同步的,但是fastapi我是用的異步數(shù)據(jù)庫訪問。(django不支持異步數(shù)據(jù)庫訪問)

在長時間并發(fā)情況下,fastapi的運行狀態(tài)非常穩(wěn)定,但是django的運行速度不行(另外我發(fā)現(xiàn)runserver運行雖然慢,但是至少測試能成功,daphne并發(fā)量大了測試直接失敗。。)。(之后還會考慮pypy的測試和其他情況的)

測試環(huán)境

阿里云

服務(wù)器: 2 vCPU 4 GiB (I/O優(yōu)化) ecs.c5.large 4Mbps

數(shù)據(jù)庫:rds.mysql.s1.small

服務(wù)器和數(shù)據(jù)庫都在華北三

測試指令:

ab -n 10000 -c 1000 http://127.0.0.1:8002/get_update_info

在更大并發(fā)和更長時間的情況下daphne測試報錯,就算設(shè)置-k也報錯,但是fastapi能夠很穩(wěn)定的響應(yīng)。

測試結(jié)果

示例代碼

#fastapi
# -*- encoding: utf-8 -*-
"""
@File    : test2.py
@Time    : 2020/3/13 14:21
@Author  : chise
@Email   : chise123@live.com
@Software: PyCharm
@info    :
"""
from typing import List

import databases
import sqlalchemy
from fastapi import FastAPI
from pydantic import BaseModel

# SQLAlchemy specific code, as with any other app
DATABASE_URL = "mysql+pymysql://......"
# DATABASE_URL = "postgresql://user:password@postgresserver/db"

database = databases.Database(DATABASE_URL)

metadata = sqlalchemy.MetaData()

notes = sqlalchemy.Table(
    "notes",
    metadata,
    sqlalchemy.Column("id", sqlalchemy.Integer, primary_key=True),
    sqlalchemy.Column("text", sqlalchemy.String),
    sqlalchemy.Column("completed", sqlalchemy.Boolean),
)

engine = sqlalchemy.create_engine(
    DATABASE_URL, connect_args={"check_same_thread": False}
)

app = FastAPI()


@app.on_event("startup")
async def startup():
    await database.connect()


@app.on_event("shutdown")
async def shutdown():
    await database.disconnect()


class D(BaseModel):
    id: int
    info: str
    data: str


@app.get('/get_update_info', response_model=D)
async def get_update_info():
    return await database.fetch_one("SELECT * FROM `publicadmin_updateinfo` LIMIT 1 ;")


if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app,)

django代碼如下

class UpdateInfo(models.Model):
    info = models.TextField(verbose_name="更新日志")
    data = models.TextField(verbose_name="主要內(nèi)容")

    # data = MDTextField(verbose_name="主要內(nèi)容")
    class Meta:
        verbose_name = "公告欄"
        verbose_name_plural = verbose_name
def get_update_info(request):
    """
    更新日志
    Args:
        request:
    Returns:
    """
    info: UpdateInfo = UpdateInfo.objects.first()
    return JsonResponse({"id": info.id, "msg": info.info, "main_info": info.data})

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 詳解PyQt5?事件處理機制

    詳解PyQt5?事件處理機制

    PyQt為事件處理提供了兩種機制高級的信號與槽機制,以及低級的事件處理機制,這篇文章主要介紹了PyQt5?事件處理機制,需要的朋友可以參考下
    2022-11-11
  • Python基礎(chǔ)詳解之描述符

    Python基礎(chǔ)詳解之描述符

    這篇文章主要介紹了Python基礎(chǔ)詳解之描述符,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)python基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-04-04
  • Python使用pdb調(diào)試代碼的技巧

    Python使用pdb調(diào)試代碼的技巧

    Pdb就是Python debugger,是python自帶的調(diào)試器。這篇文章主要介紹了Python使用pdb調(diào)試代碼的技巧,需要的朋友可以參考下
    2020-05-05
  • Python Pandas分組聚合的實現(xiàn)方法

    Python Pandas分組聚合的實現(xiàn)方法

    這篇文章主要介紹了Python Pandas分組聚合的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python閉包的兩個注意事項(推薦)

    Python閉包的兩個注意事項(推薦)

    閉包就是根據(jù)不同的配置信息得到不同的結(jié)果。下面通過本文給大家分享Python閉包的兩個注意事項,需要的朋友參考下
    2017-03-03
  • Python?Flask?上傳文件測試示例

    Python?Flask?上傳文件測試示例

    這篇文章主要為大家介紹了Python?Flask?上傳文件測試的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 使用py-spy解決scrapy卡死的問題方法

    使用py-spy解決scrapy卡死的問題方法

    這篇文章主要介紹了使用py-spy解決scrapy卡死的問題方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Django中F函數(shù)的使用示例代碼詳解

    Django中F函數(shù)的使用示例代碼詳解

    這篇文章主要介紹了Django中F函數(shù)的使用,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-07-07
  • python 判斷三個數(shù)字中的最大值實例代碼

    python 判斷三個數(shù)字中的最大值實例代碼

    這篇文章主要介紹了python 判斷三個數(shù)字中的最大值,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Flask模板渲染與Get和Post請求詳細(xì)介紹

    Flask模板渲染與Get和Post請求詳細(xì)介紹

    這篇文章主要介紹了Flask模板渲染與Get和Post請求,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-09-09

最新評論

富川| 云浮市| 北宁市| 乌鲁木齐市| 昂仁县| 涡阳县| 新干县| 封丘县| 忻城县| 苗栗市| 白水县| 邯郸市| 镇巴县| 孟连| 南川市| 吉首市| 宜宾市| 平江县| 当阳市| 江达县| 大新县| 清徐县| 措勤县| 蒙城县| 昭通市| 宜州市| 樟树市| 石泉县| 罗江县| 泉州市| 正宁县| 当阳市| 玉门市| 峨眉山市| 嘉善县| 旺苍县| 红桥区| 大余县| 咸宁市| 安顺市| 万山特区|