Python 异步编程 async 处理规则
铁律 1:网络 I/O 必须 await **(如:请求 OpenAI、查数据库、Redis、读写 S3)** **为什么要 await?** 因为这些操作**不费 CPU**。CPU 只是发了个指令,然后就在那傻等。 如果你不用 await,CPU 就会像个傻子一样盯着网卡,什么都不干。用了 await,CPU 就能在等待期间去处理别人的请求。 **做法**:使用支持异步的库(httpx, asyncpg, motor),直接 aw…
分类下的全部文章
铁律 1:网络 I/O 必须 await **(如:请求 OpenAI、查数据库、Redis、读写 S3)** **为什么要 await?** 因为这些操作**不费 CPU**。CPU 只是发了个指令,然后就在那傻等。 如果你不用 await,CPU 就会像个傻子一样盯着网卡,什么都不干。用了 await,CPU 就能在等待期间去处理别人的请求。 **做法**:使用支持异步的库(httpx, asyncpg, motor),直接 aw…
默认进入 base 环境不好,建议设置成“默认不激活 base”: 这是 Anaconda 最近更新了服务条款(Terms of Service)导致的。现在即使是免费用户,也需要显式同意他们的条款才能下载包。 创建一个新环境 比如我们要跑 **Ollama** 的脚本或者 **Milvus** 的 Python 代码,建议建一个 Python 3.10 或 3.11 的环境。
之前一直用 pycharm 进行 debug,但奈何实在是内存大户,所以直接转去 cursor debug了。之前一直是 cursor code + pycharm debug。。 常规python 路径 创建: .vscode/launch.json 即可 debug。 简单来说:**PYTHONPATH 就是 PyCharm 里 "Mark Directory as Sources Root" 的“手动版”。** 只会去这几个地方…

ORJSONResponse 确实比 FastAPI 默认的 JSONResponse 快很多,通常被称为目前 Python 生态中最快的 JSON 序列化方案。 以下是它为什么快的核心原因(底层原理拆解): 核心差异:跳过了“字符串编码”这一步 (最关键) 这是 orjson 能够秒杀标准库 json 的最大杀手锏。 **标准 json (默认)**: 把 Python 对象转换成 **Python 字符串 (str)**。 Web…

目录 [[toc]] 介绍 **✅ 什么是 Catch-All 路由?** > Catch-All 路由 指的是:一个能匹配“任意路径”的通配型路由。 它一般会使用 **路径参数 path 类型**,比如: 这个 / 开头的 /{full_path:path},意思是: • 匹配任何以 / 开头的请求; • 把完整的路径作为字符串传入 full_path; • 哪怕路径是 /foo/bar/hello.jpg,它也能匹配! 所以叫 C…
目录 [[toc]] Fastapi 使用ORM 使用的是SqlAlchemy,这里使用alembic进行数据库文件迁移与数据库迁移。 @TOC 介绍 Alembic是一种用于**数据迁移和版本控制**的工具,由 SQLAlchemy 项目维护,特别适用于Python编写的数据库应用程序。它允许你按照预定的数据库模型定义,在不丢失现有数据的情况下进行数据库模式的更改。 **主要功能** **数据库迁移**:通过 Alembic 可以自…
目录 [[toc]] https://console.cloud.google.com/ 价格 每个月 100 万字符使用免费。 配置 API 创建凭证 创建密钥 赋予权限 然后 下载密钥的 json 文件即可。 一次性生成文件信息 配置文件: 谷歌 tts 一次性 [minio 文件上传部分见 ] https://jacin.me/articles/python/s3%E4%B8%8A%E4%BC%A0%E6%96%87%E4%BB…

目录 [[toc]] https://cloud.google.com/text-to-speech/docs/create-audio-text-streaming?hl=zh-cn#client-libraries-install-python 目前谷歌 tts sdk 原生不支持中文流式,所以第一种是自建的伪流式(本质是先解析整个再流式返回客户端) 模拟流式(伪流式) **一步到位**:先用 synthesize_speech…