python - 如何同时使用 FastAPI 和 Spacy 并行处理多个请求
问题描述
我正在使用带有 FastAPI 的 spacy 来处理对某些 nlp 任务的请求。当 API 启动并使用该模型提供请求时,我正在加载 spacy 大型模型。我看到的是多个请求的时间随着并行请求的数量线性增加。如何将 spacy 与 FastAPI 集成,以便在不增加时间的情况下同时处理多个请求。我有一个 4 核 CPU,单个请求大约需要 4 毫秒。我想在 4 毫秒内同时处理 4 个请求。
解决方案
对 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/)
推荐阅读
- angular - 不使用 switchMap 调用 Angular 异步验证器
- kubernetes - 设置主机路径卷可以消耗多少空间的限制
- vue.js - 为自定义事件使用 Vue 原型
- python - 如何嵌套方法以在 Python 中安全地执行 SQLite 事务?
- ios - 在弹出视图控制器中更新其值时如何更改 UIButton 文本?
- javascript - 滚动线动画 - HTML,CSS,JS
- sql - SQL - 通过连接两个基于 Start 和 End 值的表然后连接基于 Start 和 End 值的行来创建一个新表?
- reactjs - 如何在 Reactjs 上运行一个函数并每 5 秒更改一次内容
- c# - XML 前缀 soap:Body 到 soapenv:Body
- c++ - CPP 外部问题,定义外部