后端涨薪密码:5 框架 + MCP 攻略,学会直接涨 30%

常用 Python 后端开发框架深度解析

在 Python 后端开发领域,有众多优秀的框架可供选择。每个框架都有其独特的特点、适用场景和开发方式。下面将详细介绍几个常用的 Python 后端开发框架,并在最后补充关于 MCP(模型上下文协议)的编写及接入方法。

立即加入私密群

🔥获取《DeepSeek使用手册手册》
💬参与每日话题讨论
📚解锁更多面试真题解析
🟢 绿泡泡直达:tutou123.com
(私信暗号:架构升级 优先通过)

1. Flask

特点

Flask 是一个轻量级的 Web 框架,以其简洁性和灵活性著称。它的核心代码非常精简,几乎不强制开发者使用特定的工具和库。这使得开发者可以根据项目的实际需求,自由地选择和添加各种扩展,例如数据库操作、表单验证、用户认证等。这种灵活性让 Flask 在小型项目和快速原型开发中表现出色。

适用场景
  • 小型项目:对于一些功能相对简单、需求变化较快的小型项目,Flask 的轻量级特性可以让开发者快速搭建起项目框架,并且能够根据需求灵活调整。
  • 快速原型开发:在产品的原型开发阶段,需要快速验证想法和功能。Flask 可以帮助开发者在短时间内实现一个可运行的原型,方便进行演示和测试。
示例代码
from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

if __name__ == '__main__':
    app.run(debug=True)

在上述代码中,首先导入了 Flask 类,然后创建了一个 Flask 应用实例 <font style="color:rgb(51, 51, 51);">app</font>。使用 <font style="color:rgb(51, 51, 51);">@app.route</font> 装饰器定义了一个路由,当用户访问根路径 <font style="color:rgb(51, 51, 51);">/</font> 时,会调用 <font style="color:rgb(51, 51, 51);">hello_world</font> 函数并返回 <font style="color:rgb(51, 51, 51);">Hello, World!</font>。最后,使用 <font style="color:rgb(51, 51, 51);">app.run</font> 方法启动应用,并开启调试模式。

扩展使用示例(数据库操作)
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), nullable=False)
    email = db.Column(db.String(120), unique=True, nullable=False)

    def __repr__(self):
        return f'<User {self.name}>'

@app.route('/add_user/<name>/<email>')
def add_user(name, email):
    new_user = User(name=name, email=email)
    db.session.add(new_user)
    db.session.commit()
    return f'用户 {name} 已添加'

if __name__ == '__main__':
    app.run(debug=True)

这里使用了 <font style="color:rgb(51, 51, 51);">flask_sqlalchemy</font> 扩展来进行数据库操作。定义了一个 <font style="color:rgb(51, 51, 51);">User</font> 模型类,对应数据库中的 <font style="color:rgb(51, 51, 51);">user</font> 表。在 <font style="color:rgb(51, 51, 51);">/add_user</font> 路由中,创建了一个新的用户对象并添加到数据库中。

2. Django

特点

Django 是一个功能全面的 Web 框架,遵循“开箱即用”的原则。它自带了许多实用的工具和功能,如 ORM(对象关系映射)、管理界面、表单处理、用户认证等。这使得开发者可以快速搭建起一个功能完善的网站,而无需自己去实现这些基础功能。同时,Django 有严格的代码规范和目录结构,有利于团队协作开发。

适用场景
  • 大型项目:对于功能复杂、数据量大、需要多模块协作的大型项目,Django 的全面性和规范性可以帮助开发者更好地组织代码,提高开发效率和可维护性。
  • 企业级应用开发:企业级应用通常对安全性、稳定性和可扩展性有较高的要求。Django 提供了丰富的安全机制和可扩展的架构,能够满足企业级应用的需求。
示例代码
# 创建一个简单的 Django 视图
from django.http import HttpResponse

def hello(request):
    return HttpResponse("Hello, world. You're at the polls index.")

上述代码定义了一个简单的 Django 视图函数 <font style="color:rgb(51, 51, 51);">hello</font>,当用户访问该视图对应的 URL 时,会返回一个包含 <font style="color:rgb(51, 51, 51);">Hello, world. You're at the polls index.</font> 的 HTTP 响应。

项目结构示例

Django 项目有特定的目录结构,一个典型的 Django 项目结构如下:

myproject/
├── manage.py
├── myapp/
│   ├── __init__.py
│   ├── admin.py
│   ├── apps.py
│   ├── migrations/
│   │   └── __init__.py
│   ├── models.py
│   ├── tests.py
│   └── views.py
└── myproject/
    ├── __init__.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

其中,<font style="color:rgb(51, 51, 51);">manage.py</font> 是项目的管理脚本,<font style="color:rgb(51, 51, 51);">myapp</font> 是一个应用,包含了模型、视图、管理界面等相关代码,<font style="color:rgb(51, 51, 51);">myproject</font> 目录下的 <font style="color:rgb(51, 51, 51);">settings.py</font> 是项目的配置文件,<font style="color:rgb(51, 51, 51);">urls.py</font> 是项目的 URL 路由配置文件。

3. FastAPI

特点

FastAPI 是一个基于 Python 的类型提示的高性能 Web 框架。它利用 Python 的类型提示来实现自动的数据验证、序列化和文档生成。FastAPI 支持异步编程,能够充分利用现代服务器的多核性能,提高应用的处理效率。同时,它还提供了简洁的 API 接口,易于上手和使用。

适用场景
  • 对性能要求较高的 API 开发:在需要处理大量并发请求的 API 开发中,FastAPI 的高性能和异步处理能力可以显著提高系统的响应速度和吞吐量。
  • 微服务开发:微服务架构强调服务的独立性和高可扩展性。FastAPI 的轻量级和高性能特点使其非常适合用于构建微服务。
示例代码
from fastapi import FastAPI

app = FastAPI()

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

@app.get("/items/{item_id}")
def read_item(item_id: int, q: str = None):
    return {"item_id": item_id, "q": q}

在上述代码中,创建了一个 FastAPI 应用实例 <font style="color:rgb(51, 51, 51);">app</font>。使用 <font style="color:rgb(51, 51, 51);">@app.get</font> 装饰器定义了两个路由,分别处理根路径 <font style="color:rgb(51, 51, 51);">/</font><font style="color:rgb(51, 51, 51);">/items/{item_id}</font> 的 GET 请求。<font style="color:rgb(51, 51, 51);">read_root</font> 函数返回一个包含 <font style="color:rgb(51, 51, 51);">Hello: World</font> 的 JSON 响应,<font style="color:rgb(51, 51, 51);">read_item</font> 函数接收一个整数类型的 <font style="color:rgb(51, 51, 51);">item_id</font> 和一个可选的字符串类型的 <font style="color:rgb(51, 51, 51);">q</font> 参数,并返回一个包含这些信息的 JSON 响应。

数据验证示例
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    is_offer: bool = None

@app.post("/items/")
def create_item(item: Item):
    return item

这里使用了 <font style="color:rgb(51, 51, 51);">pydantic</font> 库来进行数据验证。定义了一个 <font style="color:rgb(51, 51, 51);">Item</font> 模型类,包含 <font style="color:rgb(51, 51, 51);">name</font><font style="color:rgb(51, 51, 51);">price</font><font style="color:rgb(51, 51, 51);">is_offer</font> 三个字段。在 <font style="color:rgb(51, 51, 51);">/items/</font> 路由中,接收一个 <font style="color:rgb(51, 51, 51);">Item</font> 类型的请求体,并返回该请求体。FastAPI 会自动验证请求体的数据类型和格式。

4. Tornado

特点

Tornado 是一个具有高性能和异步 I/O 能力的 Web 框架。它基于非阻塞 I/O 和单线程事件循环,能够处理大量的并发连接,而不会消耗过多的系统资源。Tornado 还提供了内置的异步 HTTP 客户端和服务器,方便进行网络通信。

适用场景
  • 实时 Web 应用:如实时聊天应用、实时数据监控系统等,需要处理大量的并发连接和实时数据传输,Tornado 的高性能和异步处理能力可以满足这些需求。
  • 游戏服务器:游戏服务器通常需要处理大量的玩家连接和实时交互,Tornado 的异步 I/O 能力可以提高服务器的并发处理能力和响应速度。
示例代码
import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

def make_app():
    return tornado.web.Application([
        (r"/", MainHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

在上述代码中,定义了一个 <font style="color:rgb(51, 51, 51);">MainHandler</font> 类,继承自 <font style="color:rgb(51, 51, 51);">tornado.web.RequestHandler</font>,重写了 <font style="color:rgb(51, 51, 51);">get</font> 方法,当用户发送 GET 请求时,返回 <font style="color:rgb(51, 51, 51);">Hello, world</font><font style="color:rgb(51, 51, 51);">make_app</font> 函数创建了一个 Tornado 应用实例,并定义了路由规则。最后,启动应用并监听 8888 端口。

立即加入私密群

🔥获取《DeepSeek使用手册手册》
💬参与每日话题讨论
📚解锁更多面试真题解析
🟢 绿泡泡直达:tutou123.com
(私信暗号:架构升级 优先通过)

异步处理示例
import tornado.ioloop
import tornado.web
import asyncio

class AsyncHandler(tornado.web.RequestHandler):
    async def get(self):
        await asyncio.sleep(1)
        self.write("Async response")

def make_app():
    return tornado.web.Application([
        (r"/async", AsyncHandler),
    ])

if __name__ == "__main__":
    app = make_app()
    app.listen(8888)
    tornado.ioloop.IOLoop.current().start()

这里定义了一个异步处理的视图 <font style="color:rgb(51, 51, 51);">AsyncHandler</font>,使用 <font style="color:rgb(51, 51, 51);">async</font><font style="color:rgb(51, 51, 51);">await</font> 关键字实现异步操作。当用户访问 <font style="color:rgb(51, 51, 51);">/async</font> 路径时,会等待 1 秒后返回 <font style="color:rgb(51, 51, 51);">Async response</font>

5. Sanic

特点

Sanic 是一个基于异步编程的高性能 Web 框架,其语法与 Flask 相似,易于上手。Sanic 利用 Python 的 <font style="color:rgb(51, 51, 51);">asyncio</font> 库实现异步 I/O,能够在单线程中处理大量的并发请求,提高应用的性能。

适用场景
  • 对性能有较高要求的 Web 应用和 API 开发:在需要处理大量并发请求的 Web 应用和 API 开发中,Sanic 的高性能和异步处理能力可以显著提高系统的响应速度和吞吐量。
示例代码
from sanic import Sanic
from sanic.response import text

app = Sanic("MyHelloWorldApp")

@app.get("/")
async def hello_world(request):
    return text("Hello, world.")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

在上述代码中,创建了一个 Sanic 应用实例 <font style="color:rgb(51, 51, 51);">app</font>。使用 <font style="color:rgb(51, 51, 51);">@app.get</font> 装饰器定义了一个路由,当用户访问根路径 <font style="color:rgb(51, 51, 51);">/</font> 时,会调用 <font style="color:rgb(51, 51, 51);">hello_world</font> 函数并返回 <font style="color:rgb(51, 51, 51);">Hello, world.</font><font style="color:rgb(51, 51, 51);">hello_world</font> 函数是一个异步函数,使用 <font style="color:rgb(51, 51, 51);">async</font> 关键字定义。

中间件示例
from sanic import Sanic
from sanic.response import text

app = Sanic("MyApp")

@app.middleware('request')
async def print_on_request(request):
    print("Request received")

@app.middleware('response')
async def prevent_xss(request, response):
    response.headers["X-XSS-Protection"] = "1; mode=block"

@app.get("/")
async def hello_world(request):
    return text("Hello, world.")

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=8000)

这里定义了两个中间件,一个在请求处理前执行,打印 <font style="color:rgb(51, 51, 51);">Request received</font>,另一个在响应返回前执行,添加 <font style="color:rgb(51, 51, 51);">X-XSS-Protection</font> 头,用于防止跨站脚本攻击。

6. 编写 MCP(模型上下文协议)及接入 MCP 服务

MCP 简介

MCP(模型上下文协议)允许开发者自由接入外部 AI 工具和资源,实现更强大的功能扩展。通过 MCP,开发者可以将不同的工具和服务集成到自己的应用中,构建一个开放的生态系统。

编写 MCP 服务端代码示例(Python)
from mcp.server import FastMCP
from selenium.webdriver import Remote, ChromeOptions

mcp = FastMCP("database")

@mcp.tool()
def get_user_info(name: str):
    # 连接数据库并查询用户信息
    import mysql.connector
    conn = mysql.connector.connect(
        host="localhost",
        user="your_username",
        password="your_password",
        database="your_database"
    )
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users WHERE name = %s", (name,))
    result = cursor.fetchone()
    conn.close()
    return result

@mcp.tool()
def generate_chart(data: list):
    # 调用 ECharts 生成图表
    import requests
    response = requests.post("https://echarts.baidu.com/generate", json={"data": data})
    return response.json()

if __name__ == "__main__":
    mcp.run()

在上述代码中,使用 <font style="color:rgb(51, 51, 51);">FastMCP</font> 创建了一个 MCP 服务实例。定义了两个工具函数 <font style="color:rgb(51, 51, 51);">get_user_info</font><font style="color:rgb(51, 51, 51);">generate_chart</font>,分别用于查询用户信息和生成图表。<font style="color:rgb(51, 51, 51);">@mcp.tool()</font> 装饰器将这些函数注册为 MCP 工具。

接入 MCP 服务的方法
1. 进入 MCP 设置

在使用的 Python 后端框架应用中,通常可以在配置文件或特定的设置界面中找到 MCP 设置选项。例如,在 Trae 工具中,可以点击界面右上角的“AI 侧栏”,然后选择“MCP”进入设置页面。

2. 添加服务
  • 从市场选择服务:许多 MCP 平台提供了服务市场,开发者可以在市场中搜索并选择需要的服务,如 GitHub、数据库服务等。选择服务后,按照提示进行授权和配置。
  • 手动粘贴 JSON 配置:如果需要接入自定义的 MCP 服务,可以手动编写 JSON 配置文件,然后在设置页面中粘贴该配置。配置文件通常包含服务的名称、URL、认证信息等。
3. 测试调用

在完成服务添加和配置后,可以在应用中进行测试调用。例如,在 Flask 应用中,可以通过以下代码调用 MCP 服务:

from flask import Flask
import requests

app = Flask(__name__)

@app.route('/get_user/<name>')
def get_user(name):
    mcp_url = "http://your_mcp_server/get_user_info"
    response = requests.post(mcp_url, json={"name": name})
    return response.json()

if __name__ == "__main__":
    app.run(debug=True)

在上述代码中,定义了一个 <font style="color:rgb(51, 51, 51);">/get_user</font> 路由,当用户访问该路由时,会向 MCP 服务发送请求,获取用户信息并返回。

这些框架各有优势,开发者可以根据项目的规模、性能需求、开发周期等因素来选择合适的框架。同时,通过 MCP 可以进一步扩展应用的功能,实现更多的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值