7、创建协程、事件和消息驱动的事务

创建协程、事件和消息驱动的事务

1. 异步编程基础

FastAPI框架是一个异步框架,它运行在 asyncio 平台上,并使用ASGI协议。它以100%支持异步端点和非阻塞任务而闻名。本章将详细介绍如何使用异步任务以及事件驱动和消息驱动的事务来创建高度可扩展的应用程序。

1.1 实现协程

在FastAPI框架中,线程池始终存在,用于执行每个请求的同步API和非API事务。理想情况下,当这些事务对CPU密集型和I/O密集型事务的性能开销都很小的时候,使用FastAPI框架的总体性能仍然优于那些使用非ASGI平台的框架。然而,当由于高CPU密集型流量或繁重的CPU工作负载而发生竞争时,由于线程切换,FastAPI的性能开始下降。

线程切换 是在同一进程内从一个线程切换到另一个线程的上下文切换。因此,如果有多个不同工作负载的事务在后台和浏览器上运行,FastAPI将在线程池中运行这些事务,并进行多次上下文切换。这种场景会导致竞争和对较轻工作负载的性能下降。为了避免性能问题,我们采用协程切换而不是线程。

1.2 应用协程切换

FastAPI框架通过一种称为协程切换的机制以最佳速度运行。这种方法允许事务调整任务通过允许其他正在运行的进程暂停,以便线程可以执行并完成更紧急的任务,并在不抢占线程的情况下恢复“等待”的事务。这些协程切换是程序员定义的组件,与内核或内存功能无关。在FastAPI中,实现协程有两种方式:

  • 使用 @asyncio.coroutine 装饰器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值