如何从使用 Flask 实现的 REST API 获取更新(响应)?如果不可能,是否有任何解决方法?
How to get updates(response) from a REST API implemented using Flask? Is there any workaround if it is not possible?
我正在开发 OCR 应用程序。我的应用程序使用 docker。该应用程序由 4 个容器组成。
- 转换器(将 PDF 转换为图像)
- Cleaner(清理图像)
- 转录器(将图像转换为文本)
- 一应俱全
AllinOne 容器通过 API 调用集成了所有其他容器。 API 是使用 Flask 实现的。 AllinOne 容器暴露给服务器。工作流程如下,
Postman(用户请求)-> AllinOne -> Converter -> AllinOne -> Cleaner -> Allinone -> Transcriber -> Allinone -> Postman(响应)
现在,我正在尝试向我的应用程序添加一个名为“批量上传”的功能,用户可以在其中上传 .zip 文件。由于批量上传需要更长的时间来处理,我需要关于进程状态的中间结果。我为正在上传的每个文件分配了一个 file_id。我需要向用户 return file_id 以便他们能够检查其文件的处理状态。但是,处理必须在后台进行。
如果我 return file_id 处理将停止,否则 file_id 将仅在文件处理后 returned,这是无用的。我应该实施两个 API 调用吗?一个用于上传文件和 returns file_id,另一个用于处理文件和 return 结果。有没有办法发送频繁的更新作为来自 API 的响应?可以做得更好吗?欢迎提出架构方面的任何更改建议。
REST-API 是同步的,但您的处理不需要。
您可能应该更改您的体系结构,以便您的 HTTP-POST 只创建所有必要的作业和 returns 用户可以稍后检查的 ID。
当用户想要获取更新时,他必须使用 ID 询问您的 api 以获取状态。
显然,您的所有容器都需要支持该模式 - 例如他们发送有关处理状态的异步更新。根据我的经验,rest api 调用不是最好的模式,使用一些异步的东西来报告状态,例如RabbitMq/kafka/nats。
然后,您的多合一容器/或新的专用聚合器可以聚合此类更新和 return 状态(如果有人询问)。
我正在开发 OCR 应用程序。我的应用程序使用 docker。该应用程序由 4 个容器组成。
- 转换器(将 PDF 转换为图像)
- Cleaner(清理图像)
- 转录器(将图像转换为文本)
- 一应俱全
AllinOne 容器通过 API 调用集成了所有其他容器。 API 是使用 Flask 实现的。 AllinOne 容器暴露给服务器。工作流程如下, Postman(用户请求)-> AllinOne -> Converter -> AllinOne -> Cleaner -> Allinone -> Transcriber -> Allinone -> Postman(响应)
现在,我正在尝试向我的应用程序添加一个名为“批量上传”的功能,用户可以在其中上传 .zip 文件。由于批量上传需要更长的时间来处理,我需要关于进程状态的中间结果。我为正在上传的每个文件分配了一个 file_id。我需要向用户 return file_id 以便他们能够检查其文件的处理状态。但是,处理必须在后台进行。
如果我 return file_id 处理将停止,否则 file_id 将仅在文件处理后 returned,这是无用的。我应该实施两个 API 调用吗?一个用于上传文件和 returns file_id,另一个用于处理文件和 return 结果。有没有办法发送频繁的更新作为来自 API 的响应?可以做得更好吗?欢迎提出架构方面的任何更改建议。
REST-API 是同步的,但您的处理不需要。 您可能应该更改您的体系结构,以便您的 HTTP-POST 只创建所有必要的作业和 returns 用户可以稍后检查的 ID。
当用户想要获取更新时,他必须使用 ID 询问您的 api 以获取状态。
显然,您的所有容器都需要支持该模式 - 例如他们发送有关处理状态的异步更新。根据我的经验,rest api 调用不是最好的模式,使用一些异步的东西来报告状态,例如RabbitMq/kafka/nats。 然后,您的多合一容器/或新的专用聚合器可以聚合此类更新和 return 状态(如果有人询问)。