我已经使用异步实现了所有路由。并遵循 FastAPI 文档中的所有指南。
每条路由都有多个数据库调用,没有异步支持,所以它们是这样的正常功能
def db_fetch(query):
# I take a few seconds to respond
return
为了避免阻塞我的事件循环,我使用fastapi.concurrancy.run_in_threadpool
现在的问题是,当大量请求到来时,我的新请求被阻止了。即使我关闭浏览器选项卡(取消请求),整个应用程序也会卡住,直到旧请求得到处理。
我在这里做错了什么?
我uvicorn
用作我的 ASGI 服务器。我在具有 2 个副本的 Kubernetes 集群中运行。
很少有人怀疑:我是否产生了太多线程?它是 uvicron 中的一些错误吗?不太确定!