返回顶部
首页 > 资讯 > 后端开发 > Python >fastapi与django异步的并发对比分析
  • 416
分享到

fastapi与django异步的并发对比分析

fastapi异步django异步django异步并发fastapi异步并发 2023-03-15 08:03:01 416人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录概述先说结果测试环境测试结果示例代码Django代码如下总结概述 据说fastapi是目前最快的异步框架,遂决定将其和djanGo异步进行并发比较。 先说结果 fastapi的异

概述

据说fastapi是目前最快的异步框架,遂决定将其和djanGo异步进行并发比较。

先说结果

fastapi的异步可以使整体运行速度非常均衡,不会出现较大波动,但是django会出现大量的波动问题,部分访问速度很快,但是部分访问速度很慢,甚至超时。

个人感觉是因为django的数据库访问是同步的,但是fastapi我是用的异步数据库访问。(django不支持异步数据库访问)

在长时间并发情况下,fastapi的运行状态非常稳定,但是django的运行速度不行(另外我发现runserver运行虽然慢,但是至少测试能成功,daphne并发量大了测试直接失败。。)。(之后还会考虑pypy的测试和其他情况的)

测试环境

阿里云

服务器: 2 vCPU 4 GiB (I/O优化) ecs.c5.large 4Mbps

数据库:rds.Mysql.s1.small

服务器和数据库都在华北三

测试指令:

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

在更大并发和更长时间的情况下daphne测试报错,就算设置-k也报错,但是fastapi能够很稳定的响应。

测试结果

示例代码

#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})

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: fastapi与django异步的并发对比分析

本文链接: https://lsjlt.com/news/199848.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • fastapi与django异步的并发对比分析
    目录概述先说结果测试环境测试结果示例代码django代码如下总结概述 据说fastapi是目前最快的异步框架,遂决定将其和django异步进行并发比较。 先说结果 fastapi的异...
    99+
    2023-03-15
    fastapi异步 django异步 django异步并发 fastapi异步并发
  • fastapi与django异步的并发源码对比分析
    这篇文章主要介绍“fastapi与django异步的并发源码对比分析”,在日常操作中,相信很多人在fastapi与django异步的并发源码对比分析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”fastapi...
    99+
    2023-07-05
  • ASP和Django:异步编程的对比分析?
    ASP和Django:异步编程的对比分析 随着Web应用程序的不断发展,异步编程已经成为了构建高性能、高并发Web应用程序的必要技能。在这篇文章中,我们将比较ASP和Django这两个流行的Web框架在异步编程方面的优劣。 ASP(Acti...
    99+
    2023-09-29
    异步编程 django 缓存
  • 同步与异步:Python与Laravel的对比分析
    在现代的软件开发中,同步和异步是两个重要的概念。同步指的是程序在执行某个任务时,必须等待该任务完成后才能执行下一个任务。而异步则是指程序在执行某个任务时,可以继续执行其他任务,不必等待该任务完成。Python和Laravel是两种常用的编...
    99+
    2023-09-16
    并发 同步 laravel
  • 同步、异步、并发:Java和Django中的重要概念解析
    在开发软件时,同步、异步和并发是非常重要的概念。Java和Django都是非常流行的编程语言和框架,这篇文章将解析这些概念在Java和Django中的使用方法和差异。 同步和异步 同步和异步是指任务之间的关系,它们是指程序执行的方式。在同...
    99+
    2023-09-10
    django 同步 并发
  • Goroutine与Coroutine的对比分析:如何选择最佳并发模型?
    Goroutine与Coroutine的对比分析:如何选择最佳并发模型? 随着计算机技术的不断发展,多任务处理和并发编程成为了软件开发中的一个重要议题。在并发编程中,Goroutine...
    99+
    2024-03-12
    并发模型 go语言
  • Django vs. Flask:Python Web框架的对比分析
    Django和Flask都是Python Web框架中的佼佼者,它们都有着自己的优点和适用场景。本文将对这两个框架进行对比分析,并提供具体的代码示例。 开发简介 Django是一个全功能的Web框架,它的主要目的是为了快速开发复...
    99+
    2024-01-19
    Python Flask django
  • 索引与并发:Java和Django的对决
    随着互联网的发展,越来越多的数据需要被存储和处理,而索引和并发技术成为了数据库优化的重要手段。在Java和Django这两个流行的编程语言中,索引和并发的实现方式有所不同。本文将对Java和Django中的索引和并发进行比较,并演示其在实...
    99+
    2023-11-01
    索引 django 并发
  • 异步存储编程的秘密:Go和Apache的对比分析
    随着互联网的不断发展和数据量的快速增长,存储数据的需求也越来越大。而异步存储编程作为一种高效的存储数据的方式,受到了越来越多的关注。本文将对异步存储编程的两种实现方式——Go和Apache进行对比分析。 异步存储编程的基础概念 异步存...
    99+
    2023-09-19
    存储 异步编程 apache
  • Aspectj与Spring AOP的对比分析
    1、简介 今天有多个可用的 AOP 库, 它们需要能够回答许多问题: 1、是否与用户现有的或新的应用程序兼容? 2、在哪里可以实现 AOP? 3、与自己的应用程序集成多快? 4、性能...
    99+
    2024-04-02
  • C语言与Python的对比与分析
    C语言与Python的对比与分析 C语言和Python是两种不同的编程语言,各有优点和适用场景。C语言作为一种底层语言,被广泛应用于系统编程、嵌入式开发等领域,具有高效性和灵活性的特点...
    99+
    2024-04-02
  • 响应式框架:Java和Django的对比分析
    响应式设计已经成为了现代Web开发的一项重要技术,它可以让网站在不同设备上的屏幕上自适应地展示。为了实现响应式设计,我们需要使用一个框架。目前市面上有很多种框架可供选择,其中Java和Django是两个比较流行的框架。本文将对这两个框架进...
    99+
    2023-09-07
    django 响应 框架
  • Windows 同步:Python 和 JavaScript 的对比分析
    在 Windows 操作系统中,同步是一种非常重要的概念。同步可以让不同的应用程序之间协调工作,共享数据,并保持一致性。在本文中,我们将比较 Python 和 JavaScript 的同步机制,看看它们在 Windows 平台上的优劣势。...
    99+
    2023-09-09
    javascript windows 同步
  • MySQL与Oracle 差异比较之触发器的示例分析
    小编给大家分享一下MySQL与Oracle 差异比较之触发器的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!触发器编号类...
    99+
    2024-04-02
  • Pytorch中Softmax与LogSigmoid的对比分析
    Pytorch中Softmax与LogSigmoid的对比 torch.nn.Softmax 作用: 1、将Softmax函数应用于输入的n维Tensor,重新改变它们的规格,使n维...
    99+
    2024-04-02
  • MySQL中InnoDB与MyISAM的对比分析
    小编给大家分享一下MySQL中InnoDB与MyISAM的对比分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对比InnoDB与MyISAM1、 存储结构MyI...
    99+
    2023-06-27
  • hive与rdbms对比的分析说明
    这篇文章给大家分享的是有关hive与rdbms对比的分析说明的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Hive并非为联机事务处理而设计,Hive并不提供实时的查询和基于行级的数据更新操作。Hive是建立在Ha...
    99+
    2023-06-03
  • Java对比两个实体的差异分析
    目录对比两个实体的差异可以用与一下方法比较两个实体类及属性差异工具类(简版)思路对比两个实体的差异 对比2个实体的值是否一致 可以用与一下方法 package com.xx; i...
    99+
    2024-04-02
  • Golang 相比 Python 的并发性能分析
    golang 的管道机制比 python 的线程机制提供更好的并发性能。管道消除了锁和线程创建开销,从而实现更快的执行速度。 Golang 与 Python 的并发性能分析 引言 并发...
    99+
    2024-05-12
    python golang
  • PHP、Spring、Django存储方案的比较与分析
    PHP、Spring、Django是当下最为流行的Web开发框架之一,它们都提供了相应的存储方案,以满足不同开发者的需求。本文将对这三种存储方案进行比较与分析,并给出相应的演示代码,帮助读者更好地了解它们的优缺点。 PHP存储方案 PH...
    99+
    2023-09-25
    存储 spring django
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作