Python世界的新星Web框架Robyn,刷新了我对Python Web框架的认知,5分钟教你入门Robyn框架

5,680 阅读4分钟

Pythoner们,今天要给大家开个脑洞,用一款超轻量级、高性能的Python Web框架—Robyn,从0到1搞定一个Web API!🤩

你可能会问,为什么是Robyn?因为它快得离谱,基于Rust构建,性能杠杠的,还支持超多现代化特性。重点是:它够简单!

🚀 Robyn

Robyn 是一个新兴的Python Web框架,旨在提供极致的性能和简洁的开发体验。它采用Rust编写的高性能组件,使得Robyn在处理高并发和异步任务时表现优异,特别适用于需要高效处理的场景。框架结合了Rust的高性能与Python的易用性,帮助开发者快速构建高效的Web应用。

Robyn官网:  robyn.tech/


📈 Robyn和其他框架对比

以下是Robyn与其他流行Python Web框架(如Flask、Django和FastAPI)的对比图,涵盖了速度、易用性、功能丰富性和其他重要指标:

图片

我该怎么选:

  • Robyn 是为追求高性能、低延迟和并发处理的开发者设计的,尤其适合构建现代的Web应用和API。
  • Flask 适合小型项目、原型开发,易于上手。
  • FastAPI 在性能和功能之间找到了平衡,非常适合构建高性能API。
  • Django 提供了全栈开发的完整解决方案,适用于大型复杂的Web应用。

根据不同的项目需求,选择合适的框架将大大提升开发效率。


用Robyn从0到1搭建一个Web API

开工前准备

要用Robyn,得先装一下。

pip install robyn

安装完毕后,开搞!💪


1. 创建基础服务

先来个简单的GET接口,验证我们是不是走在正轨上。

from robyn import Robyn

app = Robyn(__file__)  # 创建Robyn应用

@app.get("/ping")
def ping():
    return "Pong!"

if __name__ == "__main__":
    app.start(host="0.0.0.0",port=8080)

运行这段代码后,打开浏览器访问http://localhost:8080/ping,看到Pong! ,这就是程序员世界里的"你好,世界"!🌍


2. 支持POST请求

咱们的API不能光会"说话",还得听得懂用户的诉求。

@app.post("/echo")
def echo(request):
    data = request.body
    return {"echo": data}

发个POST请求到/echo,你发啥,它回啥!可以用Postman或curl来测试:

curl -X POST -d "Hello, 花小姐的春天!" http://localhost:8080/echo

输出:

{"echo": "Hello, 花小姐的春天!"}

3. JSON处理与参数支持

对开发者来说,JSON是日常必备神器,咱们搞定它!

import json

@app.post("/json")
def handle_json(request):
    data = json.loads(request.body)
    name = data.get("name""Python")
    return {"message": f"Hello, {name}!"}

@app.get("/greet")
def greet(request):
    data = json.loads(request.body)
    name = data.get("name""Stranger")
    return {"greeting": f"Hi, {name}!"}

/json 接口测试:

图片

/greet 接口测试:

图片

4. 日志功能|Robyn中间件应用

有个小黑板记录API的访问情况,调试效率up!

import logging
from robyn import Request

logging.basicConfig(
    level=logging.INFO, 
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
    handlers=[
        logging.FileHandler("app.log"),  # 将日志写入文件
        logging.StreamHandler()         # 同时输出到终端
    ]
)
logger = logging.getLogger("robyn_app")

@app.before_request() # 可以指定路由,不填写就表示全部路由生效
async def hello_before_request(request: Request):
    logger.info(f"Incoming {request.method} request to {request.url.path}")
    return request

每次请求,终端都会输出日志,谁来了,看得清清楚楚。🕵️‍♂‍

图片


5. 跨域支持(CORS)

前后端分离时代,CORS是必备技能。

  from robyn import Robyn, ALLOW_CORS

  app = Robyn(__file__)
  ALLOW_CORS(app, origins = ["http://localhost:<PORT>/"])

无痛搞定跨域,直接起飞!✈️


6. 发布和部署

本地跑得挺香?那就发到线上!可以用Gunicorn+Uvicorn部署:

pip install gunicorn uvicorn

运行:

gunicorn -w 4 -k uvicorn.workers.UvicornWorker app:app

线上环境稳定了,全球用户都能访问咱的API了!🌍


结尾

用Robyn搭建Web API,就像写一封情书:简单、高效,还优雅。❤️ 希望这篇文章能帮你快速入门!有啥问题或者搞笑吐槽,评论区见!

最后,送给各位一个小笑话:

★ 

为什么程序员总是困?因为他们总是在await。😴

赶紧去写你自己的Web API吧,Robyn在等你!🎉