|
|
@ -56,7 +56,7 @@ def results(): |
|
|
|
|
|
|
|
## 技术细节 |
|
|
|
|
|
|
|
Python 的现代版本支持通过一种叫**"协程"**——使用 `async` 和 `await` 语法的东西来写**”异步代码“**。 |
|
|
|
Python 的现代版本支持通过一种叫 **"协程"** ——使用 `async` 和 `await` 语法的东西来写 **"异步代码"**。 |
|
|
|
|
|
|
|
让我们在下面的部分中逐一介绍: |
|
|
|
|
|
|
@ -413,7 +413,7 @@ Starlette (和 **FastAPI**) 是基于 <a href="https://anyio.readthedocs.io/ |
|
|
|
|
|
|
|
### 路径操作函数 |
|
|
|
|
|
|
|
当你使用 `def` 而不是 `async def` 来声明一个*路径操作函数*时,它运行在外部的线程池中并等待其结果,而不是直接调用(因为它会阻塞服务器)。 |
|
|
|
当你使用 `def` 而不是 `async def` 来声明一个 **路径操作函数** 时,它运行在外部的线程池中并等待其结果,而不是直接调用(因为它会阻塞服务器)。 |
|
|
|
|
|
|
|
如果您使用过另一个不以上述方式工作的异步框架,并且您习惯于用普通的 `def` 定义普通的仅计算路径操作函数,以获得微小的性能增益(大约100纳秒),请注意,在 FastAPI 中,效果将完全相反。在这些情况下,最好使用 `async def`,除非路径操作函数内使用执行阻塞 <abbr title="输入/输出:磁盘读写,网络通讯.">I/O</abbr> 的代码。 |
|
|
|
|
|
|
|