为了账号安全,请及时绑定邮箱和手机立即绑定

FastAPI vs Sanic vs Robyn: 谁是最快的框架之争

标签:
Python Flask API

这张照片由 Brooke CagleUnsplash 拍摄。

引言:因为普通的 API 实在太慢了

欢迎回到激动人心的Python最快框架的世界,速度在这里是一切。亲爱的读者,进入超高速的Web开发世界,在这里我们永远不满足于“足够快”,而是总是在寻求更快的东西。这就是我们寻找像光一样快的Python web框架的地方,它快到几乎可以穿越时间。技术世界不断演变,这种演变似乎永无止境,我们投入新的框架之中,这些框架易于学习,快速且更安全,并且这些文档读起来就像小说一样引人入胜,令人回味无穷。

环顾四周,我们看到了FastAPI(大楼里最受欢迎的家伙),Sanic(那个看起来很神秘的家伙)和Robyn(因为父母很出名又很有才华,所以看起来很酷又有许多天赋的家伙),这三个Python框架们保证让你的API快到像光速一样。

fastapi logo

快速API,一个快速的 web 框架。

FastAPI:当你希望你的API有点“高人一等的感觉”时

FastAPI 由 Sebastián Ramírez 创建,在 2018 年 11 月首次发布。这个框架是 Ramírez 在使用其他 Python 框架的经验以及他希望创造一个更好的框架结合现有工具的最佳特性,创造出更优秀的框架,并利用现代 Python 功能(如类型提示和异步),并通过提供更好的文档来实现这一愿望的成果,为世界带来。

主要的特点和优点:
  • 性能:基于Starlette和Pydantic的构建,FastAPI提供了高性能。
  • 类型提示:利用Python的类型提示功能进行请求和响应验证,以及文档的自动生成。
  • 异步支持:原生支持异步编程,使开发更加灵活。
  • 自动生成文档:自动生成交互式的API文档(如Swagger UI)。
  • 数据验证:内置使用Pydantic模型进行数据验证。

何时该用FastAPI:

当你想让你的同事们觉得你实际上工作很少的时候。“哦,这个完整记录和验证的API?我只是在喝咖啡的时候随手搞定的。”

创建一个虚拟的Python环境。

创建一个虚拟环境,命令如下:

    python -m venv venv
    - venv\Scripts\activate 命令(在 Windows 系统中)或
    - 运行 source venv/bin/activate 命令(在 Unix 或 Mac 系统中)
    - pip install fastapi
    #app.py  

    从 fastapi 导入 FastAPI 作为 app  
    app = FastAPI()  

    @app.get("/")  
    async def index():  
        return {"message": "你好,世界!"}  

    如果 __name__ == "__main__":  
        import uvicorn  
        uvicorn.run("main:app", host="0.0.0.0", port=5000, reload=True)
# 请在命令行输入以下命令  

python app.py  

Sanic Logo

Sanic(一个快速的 Python 网络框架)

Sanic: 速度之王

Python 中的 Sanic 框架最初是由 Adam HopkinsSanic 社区组织 在 2016 年创建的。这个名字来源于速度蓝刺猬,也就是著名的蓝色闪电(不要太当真)。Sanic 的开发目的是提供一个简单快速的异步网络服务器,充分利用 Python 3.5+ 异步/等待语法。

Sanic 以其卓越的性能著称,并设计原生支持异步请求,非常适合用来构建高性能的网络应用程序和 API。

关键特点和优点:
  • 异步: 它如此异步,以至于在你想到之前任务就已经完成了。
  • 性能: 它声称每秒可以处理比大多数框架更多的请求,性能卓越。
  • 可扩展性: 它能够处理更多的连接,具有更好的扩展性。
  • 简洁性: 如果你熟悉 Flask,它会显得非常简单,让你感觉就像在家一样自在。
什么时候使用 Sanic:

当你的应用程序需要比你的职业发展更快运行,每秒处理大量请求时,不用担心,蓝色刺猬会帮到你,保证速度的力量。

Sanic端点:

创建一个名为 ‘main.py’ 的文件

导入 Sanic 从 sanic  
从 sanic.response 导入 text  

app = Sanic("hello_world")  
@app.get("/")  
async def hello_world(request):  
    return text("你好,世界。")

要运行这段代码,只需在终端窗口中输入以下命令

运行 `sanic main`

Robyn Logo

罗宾(Robyn)

罗宾:蝙蝠侠的徒弟之 Web 框架

罗宾是这三个框架中最新的,由桑斯卡尔·杰西创建,首次发布于2021年。在多元宇宙中,蝙蝠侠招募了一个叫做“黄光”的少年,而不是沃利·韦斯特,在这个宇宙中,他被称为罗宾(指的是框架)。该框架的目标是推动Python web开发的性能边界,通过利用Rust作为其核心组件来实现这一目标。

关键特性和亮点有:
  • 由 Rust 驅動 :核心用 Rust 語言編寫,並提供 Python 綁定。
  • 簡潔 :力求簡潔的 API 設計。
  • 性能優異 :聲稱在速度上勝過其他 Python 框架。
  • 現代化 :以現代 web 開發實踐為設計理念。
  • 開發活躍,潛力巨大,可快速改進。
# 主文件

from robyn import Robyn

# 初始化Robyn应用
app = Robyn(__file__)

@app.get("/")
# 返回一个问候语
async def hello_world(request):
    return "你好,世界"

# 启动应用,监听8080端口
app.start(port=8080, host="0.0.0.0")

在命令行中输入以下命令来运行程序: python main.py 来启动程序。

何时用 Robyn:

你需要最小的开销:Robyn 力求轻量级且依赖最少。他常挂在嘴边的一句话是“我是 Robyn”(用低沉的声音)。你正在参与一个项目,该项目不需要庞大的扩展或中间件生态系统。就速度而言,不用担心,就像闪电般快速,它总是在你身边,并且虽然社区较小但非常活跃和出色,其运行速度甚至快到让你眨眼不及。

总之

我们有FastAPI,它是最受欢迎、最快、最高效的工具之一,能够快速交付和改进。它拥有最好的文档,包含清晰简洁的例子,易于跟随。

Sanic,这道蓝色的闪电已经在这个社区存在了一段时间了。如果你的应用需要在一眨眼间从零迅速部署到生产环境,那么Sanic就应该提供一些实用教程来帮助初学者学习该框架的基础知识。

而且在……等等,我闻到了什么?是 Rust 的味道吗?原来是最新的社区成员 Robyn,它正在展示其由 Rust 驱动的强大能力。它自夸比疾驰的子弹还快。它拥有很好的文档。Robyn 社区应该多制作一些教程来帮助初学者掌握基础知识。

最后,请记住,你选择的任何框架,都需要花时间来熟悉基础知识。不要恐慌,在你学习这个框架并开始遇到bug时,你已经开始了学习过程。不要放弃,阅读文档(对大多数程序员来说这是一场噩梦)。你也可以求助于你最喜欢的AI,找找在线教程。

现在就开始吧,做些超棒的事情,最好在这些框架更新版本之前,以免这篇文章变得不那么有用。

记得保持水分充足,不断学习,愿编程的力量指引你在这段学习旅程中,保持好奇心。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消