【问题标题】:Scaling fastapi and issues扩展 fastapi 和问题
【发布时间】:2021-09-27 14:17:58
【问题描述】:

您好,我正在使用 Fastapi(获取请求)实现一个微服务端点 它做了两件事

**1.从基于 postgres 的数据库中获取数据 - 获取表需要 1 秒(I/O 操作)

2.对该数据执行操作以返回响应 - 对上面获取的数据执行操作需要 0.5 秒(CPU 限制)

1 个请求所用的总时间 = 1.5 秒**

我正在使用带有异步数据库连接的异步端点,因此对于 10 个并行请求,它花费的总时间是 5 秒,不应该是 1.5 秒,因为我的端点是异步的(我的数据库操作也支持异步,所以这不是瓶颈)。

我用 univorn 运行它,worker=1 是什么导致了这种额外的开销?在异步获取表后,第二个操作是 CPU 绑定的顺序执行吗?

如何通过增加工人(进程)来扩展 CPU 绑定部分。

【问题讨论】:

    标签: python fastapi


    【解决方案1】:

    您只有一个 Gunicorn worker,这意味着您只有一个线程来处理所有请求。您的数据库工作可能是异步的,但在 fastapi 中作为 python 代码发生的所有事情都只会按顺序发生。将工人增加到 5 人,看看是否有什么不同。

    https://docs.gunicorn.org/en/stable/design.html

    【讨论】:

      猜你喜欢
      • 2012-10-23
      • 1970-01-01
      • 2016-09-20
      • 2011-07-01
      • 1970-01-01
      • 2011-06-05
      • 2013-07-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多