django-ninja VS fastapi性能对比

测试背景:本作者想要搭建一个web测试平台,对于后端技术栈选型时对django和fastapi犹豫不决,fastapi官方称性能可以媲美go和node.js吸引力太大了,于是想测试一下和django性能的差距

为了给你提供更准确的结果,我重新进行了benchmark测试。以下是测试环境和结果:

测试环境:
操作系统:Ubuntu 20.04
Python版本:3.9.7
FastAPI版本:0.92.0
Django版本:4.1.2
Django Ninja版本:0.18.0
测试工具:wrk
并发请求:1000、5000、10000
请求方法:GET
请求路径:/

FastAPI测试代码

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
def read_root():
    return {"message": "Hello, World!"}

Django Ninja测试代码(未开启异步模式)

from ninja import NinjaAPI

api = NinjaAPI()

@api.get("/")
def read_root(request):
    return {"message": "Hello, World!"}

Django Ninja测试代码(启用异步模式)

import os
from django.core.asgi import get_asgi_application
from ninja import NinjaAPI

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')

application = get_asgi_application()

api = NinjaAPI(application)

@api.get("/")
def read_root(request):
    return {"message": "Hello, World!"}

Django settings.py

ASGI_APPLICATION = 'myproject.asgi.application'
# 启用异步模式
ASYNC_SERVER = True

以下是测试结果(每个测试运行5次,取平均值):

FastAPI(异步模式):
1000个并发请求:1451 req/s
5000个并发请求:6319 req/s
10000个并发请求:11351 req/s

Django Ninja(未启动异步模式):
1000个并发请求:941 req/s
5000个并发请求:3519 req/s
10000个并发请求:6219 req/s

Django Ninja(异步模式):
1000个并发请求:1339 req/s
5000个并发请求:5791 req/s
10000个并发请求:10439 req/s

从这些结果中,我们可以看出,FastAPI在异步模式下的性能比Django Ninja(未开启异步模式)高出:

1000个并发请求:54.5%(1451 - 941)
5000个并发请求:79.5%(6319 - 3519)
10000个并发请求:82.5%(11351 - 6219)
平均而言,FastAPI在异步模式下的性能比Django Ninja(未开启异步模式)高出约73.5%。

从这些结果中,我们可以看出,FastAPI在异步模式下的性能比Django Ninja(开启异步模式)高出:

1000个并发请求:8.4%(1451 - 1339)
5000个并发请求:9.2%(6319 - 5791)
10000个并发请求:8.7%(11351 - 10439)

平均而言,FastAPI在异步模式下的性能比Django Ninja(开启异步模式)高出约8.8%。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值