当前位置: 首页 > article >正文

Microsoft Agent Framework Skills 执行 Scripts(实战指南)珊

本文能帮你解决什么1. 搞懂FastAPI异步async/await到底在什么场景下能真正提升性能。2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。3. 避开常见的坑比如阻塞操作、数据库连接池耗尽、GIL限制。4. 获得可直接复用的代码片段和配置建议。?? 主要内容脉络一、问题与背景为什么你的async可能“假生效”二、核心原理ASGI、async/await与多线程的关系三、实战演示I/O密集型 vs CPU密集型任务的正确处理姿势四、注意事项与进阶思考那些容易翻车的点一、问题与背景为什么你的async可能“假生效”很多人以为只要给FastAPI的路由函数加上async def就自动获得了高并发能力。其实不然。FastAPI基于ASGI异步服务器网关接口它确实允许异步处理请求。但异步不等于多线程更不等于性能无限提升。它的核心是“非阻塞”当一个请求在等待I/O比如查数据库、调外部API时事件循环Event Loop会去处理其他请求而不是干等着。这意味着如果你的async函数里干的是CPU密集型的活儿比如复杂的计算、图像处理那它依然会阻塞整个事件循环其他请求照样排队。官方文档虽然说了FastAPI支持异步但没明确告诉你异步的优势仅限于I/O密集型场景。 这是我用真金白银的线上故障换来的教训。二、核心原理ASGI、async/await与多线程的关系好咱们先来理清几个关键概念?? ASGIAsynchronous Server Gateway Interface这是FastAPI的底层协议。你可以把它想象成一个高效的餐厅调度系统。服务员事件循环负责接待顾客请求如果某位顾客点菜后需要等厨房做菜I/O等待服务员不会傻等而是先去接待其他顾客。厨房做好菜会通知服务员服务员再回来上菜。这样一个服务员就能同时照顾多桌客人。?? async/await这是Python的语法糖用来定义协程Coroutine。async def声明一个函数是“可暂停的”await表示“在这里可以暂停去干别的”。?? 多线程/多进程当你的任务主要是CPU密集型比如大量数学计算时异步帮不上忙。这时就需要请出多线程或多进程把计算任务分摊到多个CPU核心上去。FastAPI本身不直接管理线程但我们可以利用Python的concurrent.futures或asyncio.to_thread来实现。简单总结I/O密集型用asyncCPU密集型用多线程/多进程混合型任务两者结合。三、实战演示I/O密集型 vs CPU密集型任务的正确处理姿势接下来重点来了怎么在代码里落实场景1纯I/O密集型推荐使用async比如调用外部API、查询数据库。这是async的主场。import asynciofrom fastapi import FastAPIimport httpx # 异步HTTP客户端app FastAPI()app.get(/fetch-data)async def fetch_data():# 模拟并发调用三个外部APIasync with httpx.AsyncClient() as client:tasks [client.get(https://api.example.com/data1),client.get(https://api.example.com/data2),client.get(https://api.example.com/data3)]responses await asyncio.gather(*tasks)return {results: [r.json() for r in responses]}?? 这里千万别用同步的requests库否则会阻塞事件循环。务必使用httpx或aiohttp这种异步客户端。场景2CPU密集型必须用多线程/多进程比如图像处理、数据分析。这时候就得请出进程池。from fastapi import FastAPIfrom concurrent.futures import ProcessPoolExecutorimport timeimport osapp FastAPI()# 创建进程池工作进程数建议设为CPU核心数executor ProcessPoolExecutor(max_workersmin(32, os.cpu_count() or 1))def cpu_intensive_task(n: int):模拟CPU密集型任务比如图像处理time.sleep(n) # 这里用sleep模拟计算耗时return fTask {n} completedapp.get(/process-image)async def process_image():# 将阻塞函数提交到进程池避免阻塞事件循环future executor.submit(cpu_intensive_task, 2)result future.result()return {result: result}# 应用关闭时正确关闭进程池app.on_event(shutdown)def shutdown_event():executor.shutdown(waitTrue)?? 这里有个坑线程池大小max_workers不是越大越好。设置太大反而会增加上下文切换开销。一般建议设置为CPU核心数1。场景3混合型async 多线程实际项目中很多任务既涉及I/O又涉及计算。这时可以结合两者。import asynciofrom fastapi import FastAPIfrom concurrent.futures import ThreadPoolExecutorimport httpxapp FastAPI()executor ThreadPoolExecutor(max_workers4)async def fetch_url(client: httpx.AsyncClient, url: str):异步获取数据response await client.get(url)return response.json()def heavy_computation(data: dict):模拟CPU密集型计算time.sleep(1) # 模拟计算return {processed: data}app.get(/complex-task)async def complex_task():# 步骤1并发I/O异步async with httpx.AsyncClient() as client:data await fetch_url(client, https://api.example.com/data)# 步骤2CPU计算扔到线程池loop asyncio.get_event_loop()result await loop.run_in_executor(executor, heavy_computation, data)return result如果你用的是Python 3.9还可以用asyncio.to_thread让代码更简洁。四、注意事项与进阶思考那些容易翻车的点再说几个容易出问题的地方都是血泪史?? 阻塞操作绝对不能放在async函数里比如time.sleep()、同步的数据库驱动如psycopg2、同步的文件读写等。要用await asyncio.sleep()、异步驱动如asyncpg和aiofiles替代。?? 数据库连接池配置异步环境下数据库连接池的大小需要重新评估。我遇到过因为连接池太小高并发下所有请求都在等连接导致服务雪崩的情况。建议根据实际压力测试调整。?? GIL全局解释器锁限制Python的GIL会让多线程在纯CPU任务上效率打折。如果计算极其密集考虑用multiprocessing启动多进程但要注意进程间通信的成本。?? Uvicorn配置生产环境运行FastAPI通常用Uvicorn。建议设置--workers进程数为CPU核心数--loop uvloop使用更高效的事件循环。例如uvicorn main:app --workers 4 --loop uvloop --host 0.0.0.0 --port 8000?? 监控与日志异步环境下错误栈可能不那么直观。一定要打好日志尤其是耗时操作。可以用asyncio.create_task时附加错误回调避免任务静默失败。埔偻献沮

相关文章:

Microsoft Agent Framework Skills 执行 Scripts(实战指南)珊

本文能帮你解决什么? 1. 搞懂FastAPI异步(async/await)到底在什么场景下能真正提升性能。 2. 掌握在FastAPI中正确使用多线程处理CPU密集型任务的方法。 3. 避开常见的坑(比如阻塞操作、数据库连接池耗尽、GIL限制)。 …...

行李包安检的设计(论文+CAD图纸+proe三维+SolidWorks三维图+ANSYS源文件+论文答辩PPT)

行李包安检系统是保障公共安全的关键环节,其设计需兼顾检测效率、结构稳定性与操作便捷性。通过系统整合CAD图纸、ProE三维模型、SolidWorks三维图及ANSYS源文件,可实现从二维布局到三维结构再到力学性能的全方位优化。CAD图纸用于精准规划设备整体轮廓与…...

GraphRAG 安装与使用教程

一、GraphRAG 简介 GraphRAG(Graph Retrieval-Augmented Generation)是由微软研究院开发的基于知识图谱的检索增强生成框架。它通过构建结构化的知识图谱来增强大语言模型(LLM)的推理能力,相比传统 RAG 方法在处理复杂…...

灵毓秀-牧神-造相Z-Turbo创作实战:如何写出高质量提示词生成精美图片

灵毓秀-牧神-造相Z-Turbo创作实战:如何写出高质量提示词生成精美图片 1. 认识灵毓秀-牧神-造相Z-Turbo模型 1.1 模型特点与优势 灵毓秀-牧神-造相Z-Turbo是一款专为《牧神记》IP定制的文生图AI模型,基于Z-Image-Turbo架构进行深度优化。与通用文生图模…...

用LiuJuan Z-Image做创意设计:生成概念艺术人像与角色设定图

用LiuJuan Z-Image做创意设计:生成概念艺术人像与角色设定图 你是否曾经为角色设计而苦恼?无论是游戏角色、小说人物还是品牌IP形象,传统设计流程往往需要反复修改草图、调整细节,耗费大量时间。现在,借助LiuJuan Z-I…...

RetinaFace在合影场景中的应用:多人脸检测与关键点绘制实战

RetinaFace在合影场景中的应用:多人脸检测与关键点绘制实战 1. 合影场景中的人脸检测挑战 在合影场景中,人脸检测面临着诸多独特挑战: 密集人脸:多人聚集导致人脸间距小,容易造成检测框重叠或漏检尺度差异&#xff…...

HarmonyOS `AnimatableArithmetic<T>` 接口:拿捏自定义数据的“动画灵魂”

HarmonyOS AnimatableArithmetic<T> 接口&#xff1a;拿捏自定义数据的“动画灵魂”做客户端或者前端开发的兄弟&#xff0c;多半都和动画打过交道。 简单的位移、透明度好办&#xff0c;系统自带插值器一键搞定。但要是碰上点儿复杂的业务——比如要求一个组件的背景色在…...

OpenClaw自动化测试:Qwen3.5-9B验证APP多语言截图

OpenClaw自动化测试&#xff1a;Qwen3.5-9B验证APP多语言截图 1. 为什么需要自动化多语言测试 去年参与一个跨国APP项目时&#xff0c;我遇到了一个棘手问题&#xff1a;每次发版前需要人工检查12种语言的界面翻译一致性。团队成员需要手动截图、对照原文、记录差异&#xff…...

小白也能懂:立知多模态重排序模型,解决‘搜得到但排不准’的爬虫难题

小白也能懂&#xff1a;立知多模态重排序模型&#xff0c;解决搜得到但排不准的爬虫难题 1. 为什么我们需要多模态重排序&#xff1f; 你有没有遇到过这样的情况&#xff1a;在电商网站搜索"猫咪玩球"&#xff0c;结果前几条却是猫粮、猫窝&#xff0c;甚至完全不相…...

AI读脸术与PyTorch方案对比:CPU推理速度谁更强?实战评测

AI读脸术与PyTorch方案对比&#xff1a;CPU推理速度谁更强&#xff1f;实战评测 1. 引言 你有没有想过&#xff0c;给一张照片&#xff0c;AI就能告诉你里面的人是男是女、大概多大年纪&#xff1f;听起来像是科幻电影里的场景&#xff0c;但现在&#xff0c;这已经是触手可及…...

Qwen3-ASR-0.6B隐私计算实践:本地ASR+本地大模型摘要,全程不触网的数据闭环

Qwen3-ASR-0.6B隐私计算实践&#xff1a;本地ASR本地大模型摘要&#xff0c;全程不触网的数据闭环 1. 项目概述&#xff1a;本地语音识别的隐私安全新选择 在数据安全日益重要的今天&#xff0c;将语音处理完全放在本地进行成为了很多用户的核心需求。Qwen3-ASR-0.6B正是为此…...

HunyuanVideo-Foley 系统资源监控与清理:解决C盘空间不足的实战技巧

HunyuanVideo-Foley 系统资源监控与清理&#xff1a;解决C盘空间不足的实战技巧 1. 引言 最近在Windows本地开发机上部署HunyuanVideo-Foley时&#xff0c;发现C盘空间突然告急&#xff1f;这可能是很多开发者都会遇到的棘手问题。随着AI模型的运行&#xff0c;Docker容器、模…...

MedGemma医疗助手:5分钟本地部署,打造你的专属AI医生

MedGemma医疗助手&#xff1a;5分钟本地部署&#xff0c;打造你的专属AI医生 引言 深夜&#xff0c;当你感到身体不适&#xff0c;想初步了解症状时&#xff0c;身边有一位随时待命、知识渊博的“医生”可以咨询&#xff0c;而且这位“医生”的回答过程完全透明&#xff0c;每…...

春联生成模型-中文-base实操手册:对接Elasticsearch构建春联语料检索系统

春联生成模型-中文-base实操手册&#xff1a;对接Elasticsearch构建春联语料检索系统 1. 引言&#xff1a;当传统春联遇上现代AI与搜索 春节贴春联&#xff0c;是刻在我们文化基因里的仪式感。但每年绞尽脑汁想一副既应景又有新意的对联&#xff0c;对很多人来说是个甜蜜的负…...

Anomaly Detection系列(CVPR2025 Odd-One-Out论文解读)

Odd-One-Out: Anomaly Detection by Comparing with Neighbors 无监督多视图场景中的细粒度异常检测旨在从一组相似对象中识别出“外观异常”的个体实例。传统方法面临三大核心挑战&#xff1a; 依赖固定正常性假设&#xff1a;标准AD设定假定存在全局一致的“正常”模式&…...

Jimeng LoRA应用案例:快速测试不同Epoch版本,找到最佳训练效果

Jimeng LoRA应用案例&#xff1a;快速测试不同Epoch版本&#xff0c;找到最佳训练效果 1. 项目背景与核心价值 在LoRA模型训练过程中&#xff0c;我们常常面临一个关键问题&#xff1a;**如何确定哪个训练阶段的模型效果最好&#xff1f;**传统方法需要反复加载不同Epoch版本…...

Ollama部署LFM2.5-1.2B-Thinking:轻量级但强思考的开发者首选模型

Ollama部署LFM2.5-1.2B-Thinking&#xff1a;轻量级但强思考的开发者首选模型 1. 为什么选择LFM2.5-1.2B-Thinking模型 如果你正在寻找一个既轻量又聪明的AI助手来帮你写代码、解决问题或者进行创意写作&#xff0c;LFM2.5-1.2B-Thinking模型绝对值得你关注。这个模型虽然只有…...

DeepSeek-OCR-2实用指南:如何用AI高效处理扫描件和照片文字

DeepSeek-OCR-2实用指南&#xff1a;如何用AI高效处理扫描件和照片文字 1. 认识DeepSeek-OCR-2 1.1 什么是OCR技术 OCR&#xff08;Optical Character Recognition&#xff09;技术就像给电脑装上了一双"会读书的眼睛"。它能将图片、扫描件中的文字转换为可编辑的…...

vLLM加速Qwen2.5-7B推理:LoRA权重加载与性能测试

vLLM加速Qwen2.5-7B推理&#xff1a;LoRA权重加载与性能测试 1. 前言 在大语言模型推理中集成LoRA权重已成为提升特定任务性能的有效方法。通过低秩适配技术&#xff0c;LoRA能够在保持模型原有能力的同时&#xff0c;显著减少需要调优的参数数量。这种轻量级微调方式不仅降低…...

Phi-3-vision-128k-instruct代码生成辅助:将UI设计稿截图转换为前端代码描述

Phi-3-vision-128k-instruct代码生成辅助&#xff1a;将UI设计稿截图转换为前端代码描述 1. 引言&#xff1a;设计稿转代码的痛点与解决方案 每次拿到设计师发来的Figma或Sketch文件&#xff0c;前端开发者都要面对一个耗时的工作&#xff1a;把视觉设计转化为可运行的代码。…...

亲测有效!雪女-斗罗大陆-造相Z-Turbo生成角色细节展示:服装、发型、神态都很到位

亲测有效&#xff01;雪女-斗罗大陆-造相Z-Turbo生成角色细节展示&#xff1a;服装、发型、神态都很到位 作为一名长期关注AI绘画技术的创作者&#xff0c;我最近深度体验了"雪女-斗罗大陆-造相Z-Turbo"这款专为《斗罗大陆》风格角色设计的文生图模型。经过上百次生…...

【毕设选题】智能实验室监控系统:ESP32 + 多传感器 + MQTT

一、项目背景与需求分析 高校实验室作为科研与教学的重要场所&#xff0c;通常涉及&#xff1a; 易燃气体有毒气体精密仪器电气设备 一旦环境异常&#xff08;如气体泄漏、水浸、温度异常&#xff09;&#xff0c;极易引发安全事故。 但现实中&#xff0c;大多数实验室仍存在&a…...

DeepSeek-OCR效果展示:模糊倾斜图片也能准确识别,实测案例分享

DeepSeek-OCR效果展示&#xff1a;模糊倾斜图片也能准确识别&#xff0c;实测案例分享 1. 引言 1.1 为什么OCR识别这么难&#xff1f; 你有没有遇到过这样的场景&#xff1f;拍了一张发票照片想报销&#xff0c;结果财务说识别不出来&#xff1b;扫描了一份旧文件&#xff0…...

GraalVM内存优化不是玄学:基于237个生产镜像样本的统计分析,TOP5内存膨胀根因与对应Gradle/Maven加固配置

第一章&#xff1a;GraalVM静态镜像内存优化的认知重构传统JVM应用的内存模型建立在运行时动态类加载、JIT编译与垃圾回收协同工作的假设之上&#xff0c;而GraalVM静态原生镜像&#xff08;Native Image&#xff09;彻底颠覆了这一范式——它在构建阶段完成全部可达性分析、类…...

OpenClaw任务调度:Qwen3-14b_int4_awq优先级管理策略

OpenClaw任务调度&#xff1a;Qwen3-14b_int4_awq优先级管理策略 1. 为什么需要优先级管理 上周我在本地部署了OpenClaw对接Qwen3-14b_int4_awq模型&#xff0c;准备用它来处理日常的文档整理和代码生成任务。但很快发现一个问题&#xff1a;当我同时提交多个任务时&#xff…...

InternLM2-Chat-1.8B在嵌入式开发中的应用:STM32项目文档自动生成

InternLM2-Chat-1.8B在嵌入式开发中的应用&#xff1a;STM32项目文档自动生成 1. 引言 如果你做过嵌入式开发&#xff0c;尤其是基于STM32的项目&#xff0c;一定对写文档这件事又爱又恨。爱的是&#xff0c;一份清晰的文档能让后续的维护、交接事半功倍&#xff1b;恨的是&a…...

vLLM-v0.17.1:从MATLAB算法到生产部署的桥梁

vLLM-v0.17.1&#xff1a;从MATLAB算法到生产部署的桥梁 1. 科研与生产的鸿沟 在算法研发领域&#xff0c;MATLAB长期占据着不可替代的地位。它的矩阵运算能力、丰富的工具箱和直观的语法&#xff0c;使其成为科研人员和算法工程师的首选工具。然而&#xff0c;当这些精心设计…...

SDMatte模型微调实战:使用自定义数据集优化特定场景抠图

SDMatte模型微调实战&#xff1a;使用自定义数据集优化特定场景抠图 1. 为什么需要微调SDMatte模型 SDMatte作为开源的图像抠图模型&#xff0c;在通用场景下表现已经相当不错。但当我们面对特定领域的图像时&#xff0c;比如医疗影像中的器官分割、卫星图片中的地物提取&…...

Clawdbot企业集成:飞书机器人深度定制开发

Clawdbot企业集成&#xff1a;飞书机器人深度定制开发 企业级AI助手如何无缝融入日常工作流&#xff1f;飞书机器人正成为智能办公的新入口 在现代企业环境中&#xff0c;AI助手与办公平台的深度集成已经成为提升效率的关键。Clawdbot作为企业级AI助手平台&#xff0c;与飞书的…...

mPLUG部署避坑指南:缓存机制加速,第二次提问秒出结果

mPLUG部署避坑指南&#xff1a;缓存机制加速&#xff0c;第二次提问秒出结果 你是否遇到过这样的场景&#xff1a;部署一个AI模型&#xff0c;第一次运行还算顺利&#xff0c;但每次重启服务或再次调用时&#xff0c;又要经历漫长的模型加载等待&#xff1f;尤其是在处理图片分…...