首页 > 解决方案 > 如何同时使用 FastAPI 和 Spacy 并行处理多个请求

问题描述

我正在使用带有 FastAPI 的 spacy 来处理对某些 nlp 任务的请求。当 API 启动并使用该模型提供请求时,我正在加载 spacy 大型模型。我看到的是多个请求的时间随着并行请求的数量线性增加。如何将 spacy 与 FastAPI 集成,以便在不增加时间的情况下同时处理多个请求。我有一个 4 核 CPU,单个请求大约需要 4 毫秒。我想在 4 毫秒内同时处理 4 个请求。

标签: pythonspacyfastapi

解决方案


对 Spacy 不是很熟悉,但总的来说,如果你有阻塞代码,你应该把它放到一个非异步路由 def 中。这是因为 FastAPI 会将对该路由的调用放入线程池中。

https://fastapi.tiangolo.com/async/#path-operation-functions

@app.get("/blocking")
def blocks():
    # do something blocking
    pass

也可以试试 fastapi 的后台任务(https://fastapi.tiangolo.com/tutorial/background-tasks/


推荐阅读