# FastApi的隐形坑
大家好,这里是
米洛
,一个想和大家一起分享测试开发相关的技术,面试经验和成长经历的博主!
欢迎大家关注我的公众号: 米洛的测开日记
。
# 事情起因
今天写完了一部分功能,部署到我的阿里云服务器
,使用官方的部署命令:
也不知道是我的服务器问题还是啥,我的一个测试登录接口
的用例,在http请求的时候会卡住
。
这一卡不要紧呐,我发现我再开一个页面,其他接口都被阻塞
了!!!!也就是说,此时整个服务都不可用
了,我真的是人都傻了
。
# 做个简单的测试
因为FastApi很推崇大家用async的方式去写接口,所以我的代码里面基本上都是这种格式:
当你这么写了接口,但你的接口内部阻塞了,比如我刚才说的(http请求一直卡在那),这个时候其他接口会访问不了的。用FastApi的朋友,大家可以自测一下
!
我的测试方式是:
- 随便改写一个接口,制造一个
同步等待
的场景,假设这时候你在读写文件,可能也需要花费一些时间的,所以我这里等待了1000秒,为了让大家看效果。 - 访问环境列表接口,这时候由于环境列表一直阻塞着,页面会处于pending状态。
- 访问其他接口,比如项目列表。
多的不说,上gif!
而不sleep的时候会这样,那我有个很大的疑问。如果我在下载一个文件
,用了async模式,岂不是要玩完儿?
# 解决方案
把async去掉,改为正常的模式,即使这里sleep很久也不会影响其他线程
如果一定用async+sleep,可以用
asyncio.sleep()
这个方法
大家有兴趣的可以去测试下。
# 最新展示
展示一下最新的页面。