FastAPI学习(一)——介绍+并发测试结果+正确打开方式(Python Web框架--异步、高并发、后台)

2023-11-15

最近发现一个很nice的python web框架!
官方介绍是:
FastAPI是一种现代,快速(高性能)的Web框架,用于基于标准
Python类型提示使用Python 3.6+构建API。


主要功能是(官方内容):

快速: 非常高的性能,看齐的NodeJS和GO,现有最快的Python框架之一。
快速编码: 将功能开发速度提高约200%至300%。
更少的错误: 减少约40%的人为错误(开发人员)。直观:强大的编辑器支持。完成无处不在。调试时间更少。
简易: 旨在易于使用和学习。减少阅读文档的时间。 短:最小化代码重复。每个参数声明中的多个功能。更少的错误。
健壮: 获取可用于生产的代码。具有自动交互式文档。
基于标准: 基于(并完全兼容)API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。

基于以下第三方包开发(部分):
1、 Starlette基于ASGI异步网关协议接口的框架 。
2、 Pydantic数据验证和设置管理库。
3、 Uvicorn基于 asyncio(异步io) 开发的一个轻量级高效的 web 服务器框架。
4、 Requests HTTP库。
5、 Aiofiles 如果要使用FileResponse(文件相应)静态文件。
6、 Jinja2 网页模板渲染引擎。
7、 Python-multipart 表单解析。


在这里插入图片描述
官网:
FastAPI官网
简单介绍一下:
根据Github显示,这个项目2018年12月才开始,可以说非常新的框架了,到目前为止,是0.49.0版本,获得9700+星,Github地址:

https://github.com/tiangolo/fastapi

据说是最快的异步并发框架,
(B站学习网址https://www.bilibili.com/video/av93282315

群友并发测试结果

在这里插入图片描述
可以媲美NodeJS和GO,这就厉害了!之前GO火就是因为并发牛,很多PYTHON开发转GO也是因为这个,所以专门找了一下发现有位叫“梦想做小猿”的老哥做了测试。
下面是某老哥测试结果(用的是webbench测试工具):
在这里插入图片描述
从结果里面看,虽然比GO慢了点,但是已经非常不错了,官方也给出了测试结果:

**我也做了测试,**但是我发现结果远远不如这位老哥,原因如下:1、我用的是win10开发FastAPI,所以win10做服务器真是太辣眼睛了
2、我用的是自带的run方法,这根本谈不上并发和部署,所以也不行。
3、Flask的测试,run方法的服务,肯定也是不理想。
所以上面这个测试结果也只能参考,并不严谨!

官方测试结果

此外,学习了一晚上,有以下个人总结:
1、它的代码编写习惯和Flask很相似。熟悉Flask的小伙伴上手会很快。
2、官网的帮助还是非常棒的,逻辑好,够分量,够仔细。
3、用了不少当前许多优秀的PYTHON模块,作者真心牛。
4、目前比较新,学习教程基本没有,B站有个油管翻译,但是机翻太糟糕了,还不如原版。
5、目前还没到正式版,但0.4.0版本就已经在Github得到9.7k+ star 。

更多教程请看b站视频

点我进入B站视频

安装

方法:

pip install fastapi[all]

是的,需要安装两个包,fastapi和uvicorn。

Hello World!!!

官方教程是通过一个main.py文件然后CMD通过‘uvicorn main:app --reload’启动,个人觉得麻烦不推荐,直接用下面的方法。

正确的打开方式 “Helloworld,FastAPI”

因为我们已经安装了uvicorn,所以通过它来启动才是正确的打开方式,同时,配合pycharm:
main.py文件:

# -*- coding: UTF-8 -*-

from fastapi import FastAPI
import uvicorn as u

app = FastAPI(debug=True)

@app.get("/")
async def root():
    return {"message": "Helloworld,FastAPI"}

if __name__ == '__main__':
    u.run(app)

然后直接Ctrl+Shift+F10从Pycharm直接启动:
在这里插入图片描述
直接点击超链接:
在这里插入图片描述
在这里插入图片描述
(小吐槽一下Flask,萌新的我当初在用Flask的时候,常常莫名其妙报错,有坑!这个FastAPI貌似目前还没啥坑,看过几位前辈的使用感受,貌似也这么觉得。)

此外,还有个特色功能,比较实用。

http://127.0.0.1:8000/docs

进入 交互式API文档 ,Interactive API docs 。

http://127.0.0.1:8000/redoc

进入 替代API文档 ,Alternative API docs。

最后,感谢这位老哥。FastAPI作者,Sebastián Ramírez,德国柏林。
在这里插入图片描述
(由于没有什么教程,所以我通过官网给的教程进行学习)
官网教程地址https://fastapi.tiangolo.com/tutorial/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

FastAPI学习(一)——介绍+并发测试结果+正确打开方式(Python Web框架--异步、高并发、后台) 的相关文章

  • 动态BGP与静态BGP的区别

    动态BGP与静态BGP的区别 1 静态BGP功能简单 其带宽功能 可以实现多网接入 但路径上只有通向几大运营商的固定的几条路径 当某个运营商方向 的某个路由节点出现故障时 会导致某个运营商方向不能正常通信 造成单点故障 影响范围是 某个运营

随机推荐

  • 应急响应全流程

    一 根据情报先判断出需要出应急的是什么事件类型 常见事件类型 大规模沦陷 情况类型 情况内容 挖矿病毒 勒索病毒 无文件落地 不死 顽固 马 钓鱼 数据劫持 二 保持第一现场 第一现场包含 第一发现人 第一情报 失陷主体 群体 主体 群体行
  • drools 7.x 决策表使用

    1 何时使用决策表 何时使用决策表 如果规则能够被表达为模板 数据的格式 那你 应该考虑使用决策表 决策表中的每一行就是对应模板的一行数据 将产生一个规则 运行决策表 Drools 引擎所部署的系统中执行决策表 首先 决策表转换 成的Dro
  • Git — husky + eslint 实现代码提交检测

    一 配置ESlint 1 1 安装eslint npm install eslint D 1 2 初始化eslint 生成配置文件 npx eslint init 1 3 在编辑器安装ESlint插件 1 4 通过执行命令检测文件代码规范
  • 要隐藏高德地图的线外面的区域

    要隐藏高德地图的线外面的区域 可以通过设置地图的 mask 属性来实现 下面是具体的步骤 获取需要隐藏的区域的边界坐标点集合 这些坐标点必须按照顺时针或逆时针方向排序 这样才能正确地关闭区域 推荐使用高德官方提供的在线地图工具获取坐标点 创
  • 栈.栈STL

    栈 是后进先出的数据结构 它叫做栈 栈限定为只能在一端进行插入和删除操作 栈的实现只需要一个一维数组和一个指向栈顶的变量top就可以了 我们通过top来对栈进行插入和删除操作 栈的使用 1 判定回文串 利用栈实现判断字符串是不是回文串 栈用
  • 腾讯 T10级 Jetpack 学习思维导图意外流出,还不赶紧过来围观?

    引言 2018年 Google 官方推出一个全新的开发组件工具库 Jetpack 并将2017年所推出的一个架构组件库 Architecture Components 作为 Jetpack 的一部分纳入其中 当然 Jetpack 并没有就此
  • spark程序运行异常:java.lang.OutOfMemoryError: GC overhead limit exceeded

    此次异常是在集群上运行的spark程序日志中发现的 由于这个异常导致sparkcontext被终止 以致于任务失败 出现的一些原因 参考 GC overhead limit exceeded java lang OutOfMemoryErr
  • Edittext出现两个光标且位置不一致

    问题发生 近期的UI调整中发现在对Edittext设置居中过后 点击存在内容的ET会出现两个光标且不一致 解决方案 设置控件为单行
  • 什么是BI分析系统

    BI分析系统是一种用于帮助企业进行数据分析和决策的工具 它通过收集 整理 分析和可视化庞大的数据集 帮助企业了解自身的业务状况 并提供有关未来预测和战略决策的有价值信息 BI分析系统以其强大的功能和灵活性 在企业管理和决策中发挥着重要的作用
  • P5744 【深基7.习9】培训

    include
  • 详解目标检测Faster R-CNN

    目标检测的一般结构 背景 R CNN 是 Faster R CNN 的启发版本 R CNN 是采用 Selective Search算法来提取 propose 可能的 RoIs regions of interest 区域 然后对每个提取区
  • IC验证常见问题 地图

    SV SystemVerilog和Verilog中的表达式位宽 https blog csdn net m0 46345246 article details 121758747 dist 权重 https www cnblogs com
  • flutter -- 创建一个新的应用

    VS Code 启动 VS Code 调用 View gt Command Palette shift command P 输入 flutter 然后选择 Flutter New Module Project action 指定放置项目的位
  • PyCharm 装 cv2(openCV)

    首先在下面这个网址找对应的openCV版本 cp后就是python版本号 cp39是python3 9 Python Extension Packages for Windows Christoph Gohlke uci edu https
  • 如何成长为一名机器学习工程师

    如何成长为一名机器学习工程师 经常有人这么问 而这篇文章就尝试回答这个问题 其中会谈到关于机器学习的方方面面 从简单的线性回归到最新的神经网络 你不仅将学习如何使用这些技术 还将学习如何从头开始构建它们 这个指南主要面向计算机视觉 CV 这
  • 人工智能概论--第三次作业(三分类模型)

    1 建立数据集 三组数据 2 建立神经网络 3 训练网络 4 可视化训练过程 5 训练结果
  • 【漏洞复现】CVE-2022-46169 Cacti命令执行

    开启环境 查看端口号 登录ip 8080 发现网页报错如下 FATAL Connection to Cacti database failed Please ensure the PHP MySQL module is installed
  • Spring框架中bean的生命周期(理解)

    1 解释Spring框架中bean的生命周期 在传统的Java应用中 bean的生命周期很简单 使用Java关键字new进行bean实例化 然后该bean就可以使用了 一旦该bean不再被使用 则由Java自动进行垃圾回收 相比之下 Spr
  • 2023最全最新前端面试题(附加解答)

    JS 1 说一下innerHTML 与 innerText的作用与区别 作用 都可以获取或者设置元素的内容 区别 innerHTML可以解析内容中的html标签 innerText不能解析内容中的html标签 2 JavaScript 由以
  • FastAPI学习(一)——介绍+并发测试结果+正确打开方式(Python Web框架--异步、高并发、后台)

    最近发现一个很nice的python web框架 官方介绍是 FastAPI是一种现代 快速 高性能 的Web框架 用于基于标准 Python类型提示使用Python 3 6 构建API 主要功能是 官方内容 快速 非常高的性能 看齐的No