1写在前面
- 工作中遇到,有大佬做了解答,简单整理
- 阻塞的主要原因是
网络IO 密集型
和CPU 密集型
是两个不同的概念,ASGI
更多的是面向 网络/IO 密集型的非阻塞处理,不适用 CPU 密集型 - 理解不足小伙伴帮忙指正
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
在使用 FastAPI
做 web
服务的时候, 使用 BackgroundTasks
执行CPU密集型任务,会阻塞当前 web 服务的所有接口。
@app.get('/face_recognition_activated')
async def face_recognition_activated(level : int,background_tasks: BackgroundTasks,token: bool = Depends(get_current_token)):
"""
@Time : 2023/10/20 03:28:11
@Author : liruilonger@gmail.com
@Version : 1.0
@Desc : 开始进行人脸识别
"""
# 提取人脸库数据
background_tasks.add_task(face_recognition, data = {
"dir_name":"A205_20237test4",
"class_code": "A0205",
"real_real_id": [2747,2745,345435]
})
return {"status": 200,"message": "人脸识别开始了