求助个技术问题,Pyhton Falsk和多线程的问题

[复制链接]
查看: 2280   回复: 9
发表于 2024-5-18 03:15:28 | 显示全部楼层 |阅读模式
有个Flask API,用户每调用一次就会启动一个线程去维护用户的请求信息

这个请求信息就是立马去下单买东西(逻辑复杂,所以需要单独的线程去维护),对及时性要求高(要立马执行),我的想法是搞个线程池,我担心的问题就是线程池最大数目超出了那么用户的请求就排队阻塞了,这时候就把用户请求搁置了就不行了。预估最高的时候同时运行500个线程那样

各位技术大佬有啥建议吗,非常感谢
回复

使用道具 举报

发表于 2024-5-18 03:16:03 | 显示全部楼层
一般采用异步 + 协程 的方式去执行这样繁杂且步骤多的进程, 这样就可以解决了,如果还是解决不了的话,那就是系统的资源不够了,建议加机器做分布式,为每一个用户平均分配机器来执行这个进程
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:16:17 | 显示全部楼层
分布式感觉入不敷出哈哈哈,我我去看看异步 + 协程好不好用,谢谢大佬的回复哈
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:17:06 | 显示全部楼层
可以试试celery ,官方推荐的执行异步任务的库
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:17:50 | 显示全部楼层
楼上说的异步可行,我做过一个项目就是你说的这种,每个请求开一个线程。解决方案就是用的异步。即时要求高的操作马上执行,后续操作维护一个队列依次执行
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:18:21 | 显示全部楼层
放心不至于。
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:19:06 | 显示全部楼层
用 FastAPI
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:19:42 | 显示全部楼层
1 增加机器配置
2 更换语言 比如go
3 分布式
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:20:24 | 显示全部楼层
看了下好像可以,非常感谢
回复 支持 反对

使用道具 举报

发表于 2024-5-18 03:20:54 | 显示全部楼层
500个线程够呛,python有GIL,不管用协程还是异步都只能用一个核,上面有计算的逻辑就会卡住。你得搞成celery 多进程+gevent是比较合适的。异步库生态不好普遍bug比较多,写起来也没那么舒服。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则