MCP Academy · 课时

在生命周期中复用连接池

在多个请求之间复用 DB 和 HTTP 客户端。

第 3 / 4 课13 个步骤

在生命周期中复用连接池 是 CoddyKit 上的免费 MCP Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 MCP Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 MCP Academy 课程共包含 4 节课。

连接需要时间

每次调用都新建数据库或 HTTP 连接会很慢。握手会增加延迟,在高负载下很快就会累积起来。🐢

使用连接池复用连接

连接池会维护一组处于活动状态、随时可用的连接,每个请求借用一个,工作完成后再归还。

在启动时创建连接池

lifespan 钩子是最合适的位置:服务器启动时只创建一次连接池,并且要在任何工具运行之前完成。

@asynccontextmanager
async def lifespan(server):
    pool = await create_pool(DSN)
    yield {"pool": pool}

将其作为共享状态生成

从 lifespan 中 yield 的任何内容都会成为共享上下文,因此每个处理程序都能访问同一个连接池,而无需重新创建。

通过上下文访问

在工具内部,从请求上下文中获取连接池,而不是每次都打开自己的连接。

pool = ctx.request_context.lifespan_context["pool"]

借用、使用、归还

从连接池中 acquire 一个连接,运行查询,然后让它自动归还。with 代码块会处理连接的借出和释放。

async with pool.acquire() as conn:
    rows = await conn.fetch(sql)

限制连接池大小

设置最大大小,确保连接池打开的连接数不会超过数据库的承受能力,即使请求大量涌入也一样。

pool = await create_pool(DSN, max_size=10)

同时共享一个 HTTP 客户端

HTTP 也可以采用相同的思路:在 lifespan 中创建一个 httpx 客户端并重复使用,这样连接就能保持预热并进行池化。

client = httpx.AsyncClient()
yield {"http": client}

连接池是线程安全的

优秀的异步连接池专为并发而设计,能够安全地将连接分配给许多同时运行的请求。

留意连接泄漏

务必释放借用的资源。忘记归还的连接会形成泄漏,逐渐耗尽连接池,直到调用陷入停滞。

在关闭时关闭连接池

在 lifespan yield 之后,close 连接池,使服务器停止时连接能够正常释放。

    yield {"pool": pool}
    await pool.close()

快速检查

您应在哪里创建连接池?

回顾:连接池化

您已在 lifespan 中池化连接:创建一次,通过上下文共享,每次调用时借用,并在关闭时关闭。接下来,我们将学习缓存和限流。🎯

免费开始

用 AI 导师学习 Python — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「在生命周期中复用连接池」课时是免费的吗?

是的 — 「在生命周期中复用连接池」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 MCP Academy 课程的其余内容,请升级到 CoddyKit PRO。 MCP Academy 课程共包含 4 节课。

「在生命周期中复用连接池」这节课中我会学到什么?

在多个请求之间复用 DB 和 HTTP 客户端。 你通过在浏览器中直接运行的动手代码来练习 MCP Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 MCP Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 MCP Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「在生命周期中复用连接池」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 MCP Academy 课中编写并运行代码吗?

能。每节 MCP Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 安全地公开 SQL 查询
  2. 将 REST API 封装为工具
  3. 在生命周期中复用连接池
  4. 缓存上游并限制速率
← 返回 MCP Academy