首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Fastapi缩尺多功能应用

Fastapi缩尺多功能应用
EN

Stack Overflow用户
提问于 2022-06-30 17:00:36
回答 1查看 71关注 0票数 0

我正在努力了解如何在我们的应用上扩大Fastapi的规模。我们目前已经开发了类似于代码片段的应用程序。所以我们不使用异步调用。我们的应用程序是多tennent,我们希望每个请求加载大请求(~10 big )。

代码语言:javascript
运行
复制
from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def root():
    psycopg2 queries select ... Query last 2-3 minutes or ml model
    return {"message": "Hello World"}

当API调用发出时,另一个用户准备开始执行请求,这正是我们不想要的。我可以从1名工人增加到4-6名工人(guvicorn)。因此,超过4-6个用户可以独立使用应用程序。这是否意味着我们可以处理4-6倍的工人更多还是更少?

我们正在考虑改变为异步,并使用异步postgres驱动程序(异步),我们可以获得更多的吞吐量。我想很快就会成为数据库瓶颈吧?此外,我们做了一些性能测试,这种方法将减少一半的时间,根据我们的测试。

如果我们想在高峰时间同时处理1000个用户,我们如何进一步扩大我们的使用范围?我们应该考虑什么呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-30 20:18:20

首先:这个处理需要同步吗?我的意思是,用户是否在等待这个需要2-3分钟的处理的响应?不建议您使用需要那么长时间才能响应的API。

如果您的用户不需要等待直到它完成,那么您有几个选项:

  1. 您可以使用芹菜,并使用后台任务使此处理异步。芹菜通常用于这类事情,在这种情况下,您有大量的查询或大型处理,需要一段时间才能完成异步操作。
  2. 您还可以使用来自FastAPI的FastAPI,它允许您在后台运行事物。

如果我们这样做,您将能够轻松地扩展您的应用程序。请注意,芹菜目前不支持异步,因此除非您自己实现了一些调整,否则您将无法在那里使用异步。

关于扩展工作人员的数量,FastAPI建议您使用容器结构来管理正在运行的副本的数量,因此,您可以简单地缩放服务副本的数量,而不是使用gunicorn。如果您不使用容器,那么您可以使用一个结构,它允许您根据收到的请求数量自动生成新员工。

如果我以上的回答对你没有任何意义,我建议:

  1. 使用Postgres的异步驱动程序,这样在运行和处理查询时,FastAPI将能够接收来自其他用户的请求。请注意,如果您的查询很大,您可能需要大量内存来执行您所说的操作。
  2. 根据每秒的响应时间/请求创建某种自动缩放,以便在收到更多请求时扩展应用程序
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72819523

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档