在使用FastApi 做项目的时候, 进行压测时发现 内存会主键飙升, 然后到达一个稳定值。
经过查看源码 和 一番搜索吼发现。 是因为 router 没有使用async def 定义的时候, starlette 使用线程池处理响应, 然而,线程池中的worker 没有及时释放 内存, 导致内存飙升。
解决方式: 升级Python 到 3.8 以上, 并且升级对应的 Fastapi asyncio
或者 使用async def 进行定义。
例如:
@api_router.get("/test")
async def test_get():
# 注意使用 async def 定义
pass
版权声明:本文为hpulfc原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。