FastAPI 异步后台任务阻塞其他请求如何处理?

2023-11-27 12:56:40 浏览数 (1)

1写在前面


  • 工作中遇到,有大佬做了解答,简单整理
  • 阻塞的主要原因是 网络IO 密集型CPU 密集型是两个不同的概念, ASGI 更多的是面向 网络/IO 密集型的非阻塞处理,不适用 CPU 密集型
  • 理解不足小伙伴帮忙指正

对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》


在使用 FastAPIweb 服务的时候, 使用 BackgroundTasks 执行CPU密集型任务,会阻塞当前 web 服务的所有接口。

代码语言:javascript复制
@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": "人脸识别开始了 


	

0 人点赞