繁体   English   中英

Flask:进行非阻塞请求调用

[英]Flask: making a non-blocking requests call

Flask==2.0 (+uwsgi 进程=5, 线程=20) Python: 3.9

我有一个将接受消息并根据消息类型将此消息重定向到其他 API 的路由。 假设有 4 种类型的消息和 4 个匹配的下游 API。 该请求是使用requests库发出的,下游 API 将返回我的路由需要返回给客户端的响应(因此我需要等待响应)。

问题有时是下游 API 之一可能会出现高延迟问题。 这会产生不希望的结果,因为这会使我的应用程序变慢并影响其他消息类型。

有没有办法使这些请求调用非阻塞,因此缓慢的下游 API 响应不会减慢整个应用程序的速度? 我阅读了烧瓶异步指南,据我了解,如果您在单个路由中发出多个请求调用,您可以获得真正的好处,这对我来说并非如此,它始终是一个请求。

我相信,对您的下游 API 的异步请求可以为您提供一些缓解:

异步在执行并发 IO-bound 任务时很有用,但可能不会改善 CPU-bound 任务。

还可以考虑使用排队机制(例如烧瓶中的后台任务,或者更成熟的东西,例如 RabbitMQ)。

最后的话 - 还考虑为您的请求定义超时。

https://flask.palletsprojects.com/en/2.1.x/async-await/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM