我正在努力了解如何在我们的应用上扩大Fastapi的规模。我们目前已经开发了类似于代码片段的应用程序。所以我们不使用异步调用。我们的应用程序是多tennent,我们希望每个请求加载大请求(~10 big )。
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个用户,我们如何进一步扩大我们的使用范围?我们应该考虑什么呢?
发布于 2022-06-30 20:18:20
首先:这个处理需要同步吗?我的意思是,用户是否在等待这个需要2-3分钟的处理的响应?不建议您使用需要那么长时间才能响应的API。
如果您的用户不需要等待直到它完成,那么您有几个选项:
如果我们这样做,您将能够轻松地扩展您的应用程序。请注意,芹菜目前不支持异步,因此除非您自己实现了一些调整,否则您将无法在那里使用异步。
关于扩展工作人员的数量,FastAPI建议您使用容器结构来管理正在运行的副本的数量,因此,您可以简单地缩放服务副本的数量,而不是使用gunicorn。如果您不使用容器,那么您可以使用一个结构,它允许您根据收到的请求数量自动生成新员工。
如果我以上的回答对你没有任何意义,我建议:
https://stackoverflow.com/questions/72819523
复制相似问题