创建协程、事件和消息驱动的事务
FastAPI 是一个运行在 asyncio 平台上的异步框架,它采用 ASGI 协议,以 100% 支持异步端点和非阻塞任务而闻名。本文将聚焦于如何利用异步任务、事件驱动和消息驱动的事务来创建高可扩展性的应用程序。
1. 技术要求
本文将涵盖异步特性、软件规范以及一个报摊管理系统原型的组件。我们会以这个在线报纸管理系统原型为例,来理解、探索和实现用于管理报纸内容、订阅、计费、用户资料、客户及其他业务相关事务的异步交易。相关代码已上传至 GitHub 的 ch08 项目中。
2. 实现协程
在 FastAPI 框架中,每个请求都会有一个线程池来执行同步 API 和非 API 事务。在理想情况下,即 CPU 密集型和 I/O 密集型事务的性能开销都很小时,使用 FastAPI 框架的整体性能仍优于那些基于非 ASGI 平台的框架。然而,当由于高 CPU 密集型流量或繁重的 CPU 工作负载而出现争用时,由于线程切换,FastAPI 的性能会开始下降。
线程切换是指在同一进程内从一个线程到另一个线程的上下文切换。如果有多个不同工作负载的事务在后台和浏览器中运行,FastAPI 会在线程池中通过多次上下文切换来运行这些事务,这会导致轻量级工作负载出现争用和性能下降。为避免性能问题,我们可以应用协程切换而非线程切换。
2.1 应用协程切换
FastAPI 框架通过一种称为协程切换的机制
超级会员免费看
订阅专栏 解锁全文
39

被折叠的 条评论
为什么被折叠?



