请求未到达 FastAPI 服务器

问题描述

我正在研究 Flask 微服务,我需要用 FastAPI 重写它,但我遇到了 Flask 没有的问题。

问题是我发送的请求没有无限期地到达服务器。为了取消请求,例如使用 Postman 或 Hoppscotch,我取消了请求,然后重新发送了相同的请求,它运行良好。我也尝试过 curl,但无法重现该问题,该请求在第一时间有效。

我正在使用 uvicorn,并尝试使用其他 Asgi 服务器,并且使用 Hypercorn 重现了该问题。但是,我尝试用 daphne 重现它并且它有效。

我没有错误消息,因为请求只是卡住了,服务器永远不会捕获它。

我无法提供一个最小的可重复示例,因为我无法创建一个。事实上,我初始化了一些 FastAPI 项目,但没有一个有这个问题。我有这个错误的项目有很多后台代码并且使用了多处理和线程,也许这就是问题的原因?

我尝试了很多方法来了解导致问题的原因。你对什么可以产生我上面描述的东西有什么想法吗?

解决方法

Asyncio 主要被认为是一个单线程程序,可以因为空闲时刻而切换任务,例如等待 I/O。

Medium 上有一篇很好的文章,解释了 asynciomultithreading 之间的区别以及如何在前者上实现后者。

https://medium.com/analytics-vidhya/asyncio-threading-and-multiprocessing-in-python-4f5ff6ca75e8

话虽如此,没有源代码,很难说问题出在哪里。如果所有其他项目都有效,而您的无效,则可能是您的配置/设置或您添加的部分代码。

附注 有时我在 windows 上有类似的问题,而在 linux 上从来没有。它发生在启动时出现错误时,这与我的代码无关。虽然我不再遇到它了......也许随着更新的版本它得到了修复。这可能是您问题的根本原因,但没有代码我无法判断。