客户端、NestJS 后端和 Python 微服务的架构和交互

问题描述 投票:0回答:2

正如标题所说,我有一个关于客户端、NestJS 后端和 Python 微服务的架构和交互的问题。我需要开发一项识别服务。我有一个客户端应用程序,需要将带有图像的 HTTP 请求发送到 NestJS 后端,该后端应该联系第三方 Python 微服务,该服务将识别图像中的文本(这可能需要很长时间),我们应该在客户端应用程序上接收此响应。实现这一点的最佳方法是什么?我有一个想法,通过 RabbitMQ 将 NestJS 与 Python 微服务连接起来,客户端向 NestJS 后端发送 POST HTTP 请求,后端通过 RPC 向 Python 微服务发送一条创建任务的消息,该微服务创建一个 Redis RQ 队列,其中包含任务,向后端返回任务的NestJS id,并开始执行长时间运行的任务,我们从NestJS后端将任务id返回给客户端。之后,客户端可以以一定的时间间隔向NestJS后端发送GET HTTP请求,NestJS后端将向微服务发送获取任务状态的消息并将状态返回给客户端。 这是一个好方法吗?或者是否可以以某种方式优化此流程或更有效地实施它?

python nestjs microservices message-queue task-queue
2个回答
1
投票

我认为你走在正确的道路上。

  1. 通过 HTTP 将图像发送到 Nest - 是
  2. 将作业发布到 Redis 队列 - 是的,使用 Nestjs 内置队列处理(请参阅文档),这也将使使用作业的产品变得更容易
  3. 不要让客户端轮询结果,而是查看服务器发送的事件

服务器发送的事件完全适合您正在使用的用例。


0
投票

你能实现你的想法吗?如果有时间的话很想聊聊:)

© www.soinside.com 2019 - 2024. All rights reserved.