我在 Flask 中有两个最小的网络微服务。一个(称之为 X)接收来自外部服务的 POST 请求。 X 然后进行一些计算并将 POST 发送到另一个服务 Y。目前,X 等待 Y 完成处理,然后 X 将结果发送回初始外部服务。整个流水线平均需要 6-7 秒,从性能的角度来看,这是不可取的。
在 Flask 中从 X --> Y 执行即发即弃 POST 的最佳实践方法是什么(如果这甚至是特定于 Flask 的问题;我宁愿不调用另一个框架)。
最佳答案
您的要求清楚地暗示,使用异步任务队列。如果您的应用程序不只是一个小型 规模的 Web API,我认为使用/实现专门的消息队列工具会比 Flask 中的任何类型的黑客产生更好的结果。
然后,一般工作流将变为如下,外部服务向 X 发送 POST 请求。X 向 Y 发送消息(并忘记它)并立即将响应返回给外部服务。现在消息队列的任务是确保消息被 Y 接收并且 Y 按需要处理它。
如果此工作流程适合您,您可以查看 RabbitMQ或 Celery ,两者都相当容易设置。我亲自将 RabbitMq 与 Flask 一起使用,对结果非常满意。也看看 this回答有关在 Flask 中使用 celery 的一些概述。
关于python - Flask - 通知发送服务数据已收到,然后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985282/