当前位置:   article > 正文

FastAPI学习-26 并发 async / await_fastapi async

fastapi async

前言

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

async 和 await 关键字

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

results = await some_library()
  • 1

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

@app.get('/')
async def read_results():
    results = await some_library()
    return results
  • 1
  • 2
  • 3
  • 4

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

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

@app.get('/')
def results():
    results = some_library()
    return results
  • 1
  • 2
  • 3
  • 4

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

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

技术细节

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

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

异步代码

异步代码仅仅意味着编程语言 本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】

推荐阅读
相关标签