我已经使用异步实现了我的所有路由。并且遵循了FastAPI文档中的所有指导原则。
每个路由都有多个DB调用,这些调用不支持异步,因此它们是正常的函数,如下所示
def db_fetch(query):
# I take a few seconds to respond
return
为了避免阻塞事件循环,我使用了fastapi.concurrancy.run_in_threadpool
现在的问题是,当大量的请求出现时,我的新请求就会被阻塞。即使我关闭了浏览器选项卡(取消请求),整个应用程序也会被卡住,直到旧的请求被处理为止。
我在这里做错什么了?
我使用uvicorn
作为我的ASGI服务器。我用两个副本运行在kubernetes集群中。
很少有人怀疑:我是不是生了太多的线?是uvicron里的什么虫子吗?不太确定!
https://stackoverflow.com/questions/70927983
复制相似问题