一、Python 类型转换
json.dumps()
作用:Python 对象 → JSON 字符串方向:内存数据 → 可网络传输 / 写入文本的字符串
dict_data = {"title":"券商研报"} json_str = json.dumps(dict_data, ensure_ascii=False) # 结果:字符串 '{"title":"券商研报"}'常用参数:ensure_ascii=False→ 正常显示中文(写大模型请求体必加)
json.loads()
作用:JSON 字符串 → Python 字典 / 列表方向:接口收到的文本 → 程序可操作对象
json_str = '{"title":"券商研报"}' data = json.loads(json_str) # 结果:字典,可以直接 data["title"] 取值一句话口诀
- dumps:堆成字符串(对象→字符串)
- loads:加载成对象(字符串→对象)
LLM 项目典型流程
构造请求字典 →dumps转为字符串发给 API 接收接口返回文本 →loads转回字典读取回答
break / continue
。。。
二、Python 同步 / 异步协程
(一)思维导图
核心一句话先记住:同步 = 排队挨个做;异步协程 = 一个线程里切换干多件事,不等 IO 空窗就切去别的活
问题:sleep 期间线程卡死,啥都不干
✅ 异步协程执行
import asyncio async def work(): await asyncio.sleep(2) # 非阻塞等待,让出控制权 print("干完") asyncio.run(work()) # 启动事件循环跑协程(二)并发怎么实现?
- 单协程:顺序跑,没有并发
- 多协程并发:
asyncio.create_task()或者asyncio.gather()
import asyncio # 同时跑多个任务 async def main(): t1 = asyncio.create_task(work()) t2 = asyncio.create_task(work()) await t1 await t2 asyncio.run(main())耗时:2 秒左右,而同步要 4 秒
(三)什么时候用异步协程?
- ✅ 适合:IO 密集型(网络请求、数据库读写、文件读写)
- ❌ 不适合:CPU 密集型(大量计算,异步没用,要用多进程)
(四)容易踩的坑(傻子必看避坑)
- async 函数直接调用 → 只生成对象,不运行!必须交给 asyncio
- await 不能写在普通 def 函数里面,会报错
- 不能用 time.sleep ()!会阻塞整个事件循环,要用 await asyncio.sleep ()
- 异步里不要混大量同步阻塞代码,会废掉并发效果
(五)同步 / 异步一句话总结
- 同步:串行排队,阻塞等待,简单慢
- 异步协程:单线程并发,IO 空档复用,IO 场景速度快
## 📌 额外补充(傻瓜式区分口诀) > 遇IO就等=同步 > 遇IO就切=异步协程 > async造任务,await等结果,asyncio来调度三、WSGI & ASGI
前置一句话:WSGI / ASGI 不是服务器,是【web 框架 和 web 服务器之间的接口标准】就像插座标准:电器(Django/Flask/FastAPI)、插排(gunicorn/uvicorn)必须遵守同一个插座规范才能通电通信
(一)思维导图
(二)WSGI(Web Server Gateway Interface)
✅ 核心属性
同步接口标准!诞生很早,专门适配同步 Python Web 框架(老 Django、Flask)
- 只支持同步函数,不支持异步
- 一个请求过来,就占用一个工作线程,处理完才释放
- 无法原生支持长连接:WebSocket、服务推送 SSE 都不行
✅ 工作流程
客户端请求 → WSGI 服务器(Gunicorn/uWSGI) → 调用框架同步函数处理 → 返回响应
类比:银行窗口,1 个窗口一次只能接待 1 个人,这个人没办完,后面所有人排队等着
✅ 配套组件
- WSGI 服务器:gunicorn、uwsgi
- 框架:Flask、Django(老版本默认 wsgi 模式)
✅ 缺点
遇到 IO 等待(查数据库、调第三方接口)时,线程卡死干等着,没法处理别的请求,并发上限低
(三)ASGI(Asynchronous Server Gateway Interface)
✅ 核心属性
异步接口标准!WSGI 的升级版,支持异步,兼容同步
- 支持
async def异步函数(和咱们刚才学的协程配套) - 单线程可以同时处理大量请求(IO 空档切换任务)
- 原生支持长连接:WebSocket、SSE、实时推送
✅ 工作流程
客户端请求 → ASGI 服务器(Uvicorn/Granian) → 可以调用异步协程处理 → 返回响应
类比:客服同时对接很多客户,A 客户在等待资料(IO)的时候,客服先回复 B 客户,不用干等
✅ 配套组件
- ASGI 服务器:uvicorn、granian、daphne
- 框架:FastAPI、Starlette、Django3.2+(支持 asgi)
✅ 优势
IO 密集场景并发高,支持实时通信,是现在主流新框架的标准
(四)核心对比表(极简)
(五)高频坑(重点)
- gunicorn 默认是 WSGI,但是 gunicorn 可以搭配 uvicorn 的 worker,变成 ASGI 服务!
# gunicorn + uvicorn worker 跑FastAPI(生产常用) gunicorn main:app -w 4 -k uvicorn.workers.UvicornWorker - FastAPI 必须 ASGI,不能直接丢给纯 WSGI 服务器跑异步能力(会退化成同步)
- Django 同时支持 WSGI 和 ASGI,配置文件里
wsgi.py/asgi.py
(六)一句话终极总结
- WSGI:老同步标准,只处理一次性 http 请求,不支持 websocket
- ASGI:新版异步标准,基于协程,支持高并发 + 长连接