天下武功,唯快不破。在软件开发中更是如此,“快”能从多方面提升用户体验。谈到Python,它似乎天生就和速度无关,你可能很熟悉Django、Flask这些框架,虽然开发效率的确不错,但是速度就一言难尽。那么在前后端分离开发的时代,有没有能拿得出手的Python Web框架呢?当然是有的,FastApi它来了。
一、为什么是FastApi?
人们在介绍FastApi的时候通常会说“FastApi”是一个高性能的异步WEB框架。我相信没有哪个程序员会跟“高性能”过不去,这往往也是我们所追求的东西。fastapi具有并发性能强、能够快速上手、容错能力强、自动生成交互式文档的特点,这些都是我们选择它的理由。
二、到底有多快?
很多人介绍FastApi框架时,经常说其并发性能能够和NodeJS以及Go媲美,其实言过其实。在Go语言中文社区中梦想做小猿
分别对Go、Flask、FastApi做了性能测试,迫于篇幅限制,我这里直接放结果:
FastAPI: 500并发 30秒:Speed=955466 pages/min, 238685 bytes/sec
Flask: 500并发 30秒:Speed=33706 pages/min, 96457 bytes/sec
Go: 500并发 30秒:Speed=116962 pages/min, 278740 bytes/sec
可见Go还是很强大的,但是fastapi已经远远超过了同为python框架的 flask。
与PHP7对比:
分别用PHP7、FastAPI从mongodb数据库中取出相同的数据做成接口,相同参数得到相同的数据结果,速度如下:
FastApi用时43.06ms:
PHP7 用时43.73ms:
经过多次测试,成绩较为稳定,无需取平均值,由此看来,FastAPI速度上是可以的。
三、安装相关模块
安装FastApi执行 pip install fastapi
由于FastApi还需要一个ASGI服务框架 uvicorn,执行pip install uvicorn
注意Linux下一般会报错如下:
Centos 执行yum install python3-devel
,Ubuntu 执行sudo apt-get install python3-dev
,即可。
四、Hello,API
现在就来快速上手吧:(本文所有代码可关注公众号:pythonjs,发送“fastapi”获取!)
第一个api:
创建文件zhiliao.py
,码代码:
# -*- coding:utf-8 -*-
# 公众号:pythonjs
from fastapi import FastAPI
#创建一个FastApi实例
app = FastAPI()
#创建访问路径,下面的函数用来处理"/"的GET请求
@app.get("/")
def read_root():
return {
"Hello": "Api"}
然后在zhiliao.py
文件所在目录,执行uvicorn zhiliao:app --reload
其中,zhiliao
是py文件名,冒号后面的app
是我们在代码中创建的FastAPI实例,这一点类似Flask,其他参数等下会详细说到。
执行之后,得到反馈信息。