唐山网站建设技术支持,医疗产品设计公司,商标设计生成器,代理服务器地址大全开发响应迅速且高效的Web应用程序是开发者的首要目标之一。一个常见的需求是#xff0c;当触发一个端点时能够并行执行多个任务#xff0c;但在第一个任务完成后立即返回响应#xff0c;同时其余任务继续在后台运行。
挑战
假设在触发一个端点时#xff0c;你有三个耗时任…开发响应迅速且高效的Web应用程序是开发者的首要目标之一。一个常见的需求是当触发一个端点时能够并行执行多个任务但在第一个任务完成后立即返回响应同时其余任务继续在后台运行。
挑战
假设在触发一个端点时你有三个耗时任务需要运行但你希望在第一个任务完成后立即提供响应而剩下的任务继续在后台运行。
使用FastAPI和asyncio
FastAPI结合Python的asyncio库提供了一种强大的方法来应对这种需求。下面是一个简单而有效的方法来解决这个问题。
代码 from fastapi import FastAPIimport asyncioapp FastAPI()async def first_sub_function():# 模拟第一个函数的延迟await asyncio.sleep(1)return 第一个结果async def second_sub_function():# 模拟第二个函数的延迟await asyncio.sleep(5)print(第二个任务完成)return 第二个结果async def third_sub_function():# 模拟第三个函数的延迟await asyncio.sleep(3)print(第三个任务完成)return 第三个结果app.post(/run-tasks)async def run_tasks():# 创建第一个子函数的协程first_task first_sub_function()# 将第二和第三个子函数作为后台任务启动second_task asyncio.create_task(second_sub_function())third_task asyncio.create_task(third_sub_function())# 等待第一个任务完成first_result await first_task# 仅返回第一个任务的结果return {result: first_result}
工作原理 定义异步函数我们定义了三个异步函数每个函数通过使用await asyncio.sleep()来模拟延迟任务。 创建FastAPI应用我们初始化了一个FastAPI应用实例app。 设计端点/run-tasks端点触发我们定义的任务执行。 执行和等待任务 第一个任务first_sub_function()直接等待await这意味着端点会等待其完成。 其他两个任务second_sub_function()和third_sub_function()通过asyncio.create_task()启动为后台任务。 即时响应端点在第一个任务结果可用时立即返回而其余任务继续在后台运行。
运行应用程序
要运行FastAPI应用程序将代码保存为文件例如main.py然后运行以下命令 uvicorn main:app --reload
结论
使用FastAPI和asyncio你可以轻松实现并行执行任务立即响应Web请求并维护正在进行的后台任务。这个设计模式提高了应用程序的响应速度并增强了用户体验。祝编码愉快
阅读英文
turbocharge-your-fastapi
AI好书推荐
AI日新月异再不学来不及了。但是万丈高楼拔地起离不开良好的基础。您是否有兴趣了解人工智能的原理和实践 不要再观望 我们关于 AI 原则和实践的书是任何想要深入了解 AI 世界的人的完美资源。 由该领域的领先专家撰写这本综合指南涵盖了从机器学习的基础知识到构建智能系统的高级技术的所有内容。 无论您是初学者还是经验丰富的 AI 从业者本书都能满足您的需求。 那为什么还要等呢
人工智能原理与实践 全面涵盖人工智能和数据科学各个重要体系经典
北大出版社人工智能原理与实践 人工智能和数据科学从入门到精通 详解机器学习深度学习算法原理