FastAPI(63)- Concurrency and async / await 并发、异步/等待

简介: FastAPI(63)- Concurrency and async / await 并发、异步/等待

wait


如果使用的第三方库说明调用它们要通过 await

results = await some_library()

 

声明路径操作函数

@app.get('/')


async def read_results():


   results = await some_library()

   return results

await 只能在 async def 函数中使用

 

注意

  • 如果正在使用与某些内容(数据库、API、文件系统等)通信的第三方库,并且不支持 await, (目前大多数数据库库都是这种情况)
  • 路径操作需要声明为普通函数 def,例如

@app.get('/')


def results():


   results = some_library()

   return results

  • 如果应用程序(以某种方式)不必与其他任何东西通信并等待它响应,可以使用 async def(就是异步函数啦)
  • 如果不知道的话,使用普通 def
  • 可以根据需要在路径操作函数中混合使用 def 和 async def
  • 无论如何,在上述任何一种情况下,FastAPI 仍然会异步工作并且非常快
  • 但是按照上面的步骤,它将能够做一些性能优化

 

路径操作函数


当使用普通 def 而不是 async def 声明路径操作函数时,它在一个外部线程池中运行,然后等待,而不是直接调用(因为它会阻塞服务器)

 

依赖关系


  • 这同样适用于依赖项
  • 如果依赖项是标准 def 函数而不是 async def,则它在外部线程池中运行

 

子依赖


  • 可以有多个相互依赖的依赖项和子依赖项(作为函数定义的参数)
  • 其中一些可能是用 async def 创建的,有些可能是用普通 def 创建的
  • 使用普通 def 创建的那些将在外部线程池上调用,而不是被“等待”

 

比较概念性的东西,还是等实际使用时再补充代码栗子吧

相关文章
|
4月前
|
IDE 测试技术 开发工具
FastAPI 并发请求解析:提高性能的重要特性
在当今的数字化世界中,网络用户对于高速响应和持续连接的诉求日益显著。这促使了基于 Python 构建的 FastAPI 框架受到广泛关注,它不仅现代化且效率极高,而且简化了并行请求的处理。本篇文章旨在探讨 FastAPI 如何处理这类请求,并对应用实例进行实际编码展示。
|
12月前
|
JSON 前端开发 JavaScript
fastapi高性能异步框架,极速上手
fastapi高性能异步框架,极速上手
|
测试技术 API 数据库
FastAPI(61)- 异步测试
FastAPI(61)- 异步测试
566 0
|
NoSQL 测试技术 Redis
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(下)
|
测试技术 数据安全/隐私保护
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
FastAPI(八十四)实战开发《在线课程学习系统》--接口测试(上)
|
存储 测试技术 数据安全/隐私保护
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十三)实战开发《在线课程学习系统》--注册接口单元测试
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
FastAPI(八十二)实战开发《在线课程学习系统》接口开发-- 课程上架下架
|
NoSQL Redis 数据库
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十一)实战开发《在线课程学习系统》接口开发-- 推荐课程列表与课程点赞
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(八十)实战开发《在线课程学习系统》接口开发-- 课程列表
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程
FastAPI(七十九)实战开发《在线课程学习系统》接口开发-- 加入课程和退出课程