python - Flask - 通知发送服务数据已收到,然后处理

标签 python http flask

我在 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 按需要处理它。

如果此工作流程适合您,您可以查看 RabbitMQCelery ,两者都相当容易设置。我亲自将 RabbitMq 与 Flask 一起使用,对结果非常满意。也看看 this回答有关在 Flask 中使用 celery 的一些概述。

关于python - Flask - 通知发送服务数据已收到,然后处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49985282/

相关文章:

angular - 在 ngOnInit 上同步调用函数

ruby-on-rails - 下载大文件(~40MB)并使用回形针另存为附件

python - flask socket CORS

python - Docker运行停止工作/bin/bash:entrypoint.sh:没有此类文件或目录

python - 是否有一种矢量化的方法来检查 DataFrame 中的值(例如,如果一切都是长度为 0 的字符串)

python - 使用边缘检测和 scikit-image 在 Python 中去除背景/屏蔽

python - 属性错误: module 'tensorflow.python.keras.backend' has no attribute 'get_graph'

python - Django - 使用属性作为外键

java - 使用 Axis 客户端 API 时,将 HTTP header 添加到未调用的 HTTP 请求的处理程序

python - Apache + mod_wsgi + flask 应用程序 : "Unable to get bucket brigade for request" error in logs