欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

概述

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

先說結果

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)境

阿里云

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

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

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

測試指令:

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

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

測試結果

示例代碼

#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="主要內容")

    # data = MDTextField(verbose_name="主要內容")
    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})

總結

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

相關文章

  • Django+Django-Celery+Celery的整合實戰(zhàn)

    Django+Django-Celery+Celery的整合實戰(zhàn)

    這篇文章主要介紹了Django+Django-Celery+Celery的整合實戰(zhàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python如何將兩個txt文件內容合并

    python如何將兩個txt文件內容合并

    這篇文章主要為大家詳細介紹了python如何將兩個txt文件內容合并,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • Pycharm以root權限運行腳本的方法

    Pycharm以root權限運行腳本的方法

    今天小編就為大家分享一篇Pycharm以root權限運行腳本的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python自然語言處理庫之NLTK庫初級教程

    Python自然語言處理庫之NLTK庫初級教程

    NLTK(Natural Language Toolkit)是一個Python庫,用于實現(xiàn)自然語言處理(NLP)的許多任務,NLTK包括一些有用的工具和資源,如文本語料庫、詞性標注器、語法分析器等,在這篇初級教程中,我們將了解NLTK的基礎功能,需要的朋友可以參考下
    2023-08-08
  • Python入門教程之變量與數(shù)據(jù)類型

    Python入門教程之變量與數(shù)據(jù)類型

    這篇文章主要介紹了Python入門教程之變量與數(shù)據(jù)類型的相關知識,文中給大家提到了變量的基本概念和數(shù)據(jù)類型的相關實例代碼,需要的朋友可以參考下
    2022-02-02
  • python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式

    python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式

    這篇文章主要介紹了python數(shù)據(jù)分析之DateFrame數(shù)據(jù)排序和排名方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python的numpy庫下的幾個小函數(shù)的用法(小結)

    Python的numpy庫下的幾個小函數(shù)的用法(小結)

    這篇文章主要介紹了Python的numpy庫下的幾個小函數(shù)的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • Python3.4編程實現(xiàn)簡單抓取爬蟲功能示例

    Python3.4編程實現(xiàn)簡單抓取爬蟲功能示例

    這篇文章主要介紹了Python3.4編程實現(xiàn)簡單抓取爬蟲功能,涉及Python3.4網(wǎng)頁抓取及正則解析相關操作技巧,需要的朋友可以參考下
    2017-09-09
  • Python虛擬機之super超級魔法的使用和工作原理詳解

    Python虛擬機之super超級魔法的使用和工作原理詳解

    在本篇文章中,我們將深入探討Python中的super類的使用和內部工作原理,super類作為Python虛擬機中強大的功能之一,super 可以說是 Python 對象系統(tǒng)基石,他可以幫助我們更靈活地使用繼承和方法調用,需要的朋友可以參考下
    2023-10-10
  • 簡單示例解析python爬蟲IP的使用(小白篇)

    簡單示例解析python爬蟲IP的使用(小白篇)

    這篇文章主要為大家通過簡單示例解析python爬蟲IP的使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-06-06

最新評論