首页 > 其他分享 >FastAPI学习-26 并发 async / await

FastAPI学习-26 并发 async / await

时间:2023-10-01 15:34:46浏览次数:48  
标签:异步 26 FastAPI await 汉堡 async 等待 def

前言

有关路径操作函数的 async def 语法以及异步代码、并发和并行的一些背景知识

async 和 await 关键字

如果你正在使用第三方库,它们会告诉你使用 await 关键字来调用它们,就像这样:

results = await some_library()

然后,通过 async def 声明你的 路径操作函数:

@app.get('/')
async def read_results():
    results = await some_library()
    return results

你只能在被 async def 创建的函数内使用 await

如果你正在使用一个第三方库和某些组件(比如:数据库、API、文件系统...)进行通信,第三方库又不支持使用 await (目前大多数数据库三方库都是这样),这种情况你可以像平常那样使用 def 声明一个路径操作函数,就像这样:

@app.get('/')
def results():
    results = some_library()
    return results

如果你的应用程序不需要与其他任何东西通信而等待其响应,请使用 async def

如果你不清楚,使用 def 就好.
注意:你可以根据需要在路径操作函数中混合使用 def 和 async def,并使用最适合你的方式去定义每个函数。FastAPI 将为他们做正确的事情。
无论如何,在上述任何情况下,FastAPI 仍将异步工作,速度也非常快。
但是,通过遵循上述步骤,它将能够进行一些性能优化。

技术细节

Python 的现代版本支持通过一种叫"协程"——使用 async 和 await 语法的东西来写”异步代码“。
让我们在下面的部分中逐一介绍:

  • 异步代码
  • async 和 await
  • 协程

异步代码

异步代码仅仅意味着编程语言

标签:异步,26,FastAPI,await,汉堡,async,等待,def
From: https://www.cnblogs.com/yoyoketang/p/17738877.html

相关文章

  • UVA12655 Trucks 题解
    题目传送门前言中文题目可以看link。前置知识Kruskal重构树|最近公共祖先简化题意给定一个\(N\)个点\(M\)条边的有向图,共有\(S\)次询问,每次询问从\(L\)到\(H\)所有的路径中最小的权值的最大值(多组数据)。本题即最大瓶颈路问题。解法使最小的权值最大,不难......
  • Flutter/Dart第04天:Dart异步编程(Future和async/await)
    Dart官网代码实验室:https://dart.dev/codelabs/async-await重要说明:本博客基于Dart官网代码实验室,但并不是简单的对官网文章进行翻译,我会根据个人研发经验,在覆盖官网文章核心内容情况下,加入自己的一些扩展问题和问题演示和总结,包括名称解释、使用场景说明、代码样例覆盖、最后完......
  • 9.26日
    今天简单学习了栈的实现操作和队列的基本应用,马原课上简单认识了物质和意识的性质。 ......
  • 解题报告 P2680 [NOIP2015 提高组] 运输计划
    P2680[NOIP2015提高组]运输计划题目链接LCA的题,需要求最大值最小,考虑二分答案。先存储每组询问的距离。然后二分答案时找出所有比当前答案长的距离的重叠部分。在这些重叠部分中找出权值最大的边。判断最长链减去这条边是否小于等于当前答案。否则返回0代码如下/**@......
  • abc260F - Find 4-cycle
    F-Find4-cycle显然就是在一个集合中枚举两个点,然后看在另一个集合中是否存在两个点与这个集合中的两个点都相连。假设x是v1中的一个点,设它的两条出边是(x,a),(x,b),那么记录下f[a][b]=x,根据鸽巢原理,这样做是n^2的#include<cstdio>#include<algorithm>#include<cstring>#in......
  • FastAPI学习-22.response 异常处理 HTTPException
    前言某些情况下,需要向客户端返回错误提示。这里所谓的客户端包括前端浏览器、其他应用程序、物联网设备等。需要向客户端返回错误提示的场景主要如下:客户端没有执行操作的权限客户端没有访问资源的权限客户端要访问的项目不存在等等...遇到这些情况时,通常要返回 4XX(40......
  • FastAPI学习-23.异常处理器 exception_handler
    前言通常我们可以通过raise抛出一个HTTPException异常,请求参数不合法会抛出RequestValidationError异常,这是最常见的2种异常。HTTPException异常向客户端返回HTTP错误响应,可以使用 raise触发 HTTPException。fromfastapiimportFastAPI,HTTPExceptionapp=Fa......
  • FastAPI学习-24.自定义异常处理器 exception_handler
    前言添加自定义处理器,要使用 Starlette的异常工具。安装自定义异常处理器假设要触发的自定义异常叫作 UnicornException。且需要FastAPI实现全局处理该异常。此时,可以用 @app.exception_handler() 添加自定义异常控制器:fromfastapiimportFastAPI,Requestfromfa......
  • FastAPI学习-25.response_model 定义响应模型
    你可以在任意的_路径操作_中使用 response_model 参数来声明用于响应的模型:@app.get()@app.post()@app.put()@app.delete()fromtypingimportAny,List,UnionfromfastapiimportFastAPIfrompydanticimportBaseModelapp=FastAPI()classItem(BaseModel)......
  • 2023.09.26 动手动脑
    Java的类在构造时会提供一个无参的构造方法,如果已存在用户已经自定义的构造方法,则原有的无参构造方法将无法调用,只能调用自己定义的构造方法。静态初始化的执行顺序:classRoot{static{System.out.println("Root的静态初始化块");}{Sys......