如何在 REST 客户端和 (Python) REST 服务器之间插入 RabbitMQ?

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

如果我开发了一个托管在Apache中的REST服务和一个Python插件,它的服务是GET、PUT、DELETE、PATCH;而这个服务是由一个Angular客户端(或其他REST交互浏览器技术)消费的。 那么如何用RabbitMQ(AMQP)使其具有可扩展性?

潜在的解决方案#1

  • 多个Apache的仍然面对浏览器的HTTP调用。
  • 每个Apache实例都使用AMQP插件,然后将消息发布到一个队列中。
  • Python微服务监控一个队列,并拉出一条消息,服务它并返回响应。
  • 响应传回给Apache插件,Apache再生成HTTP响应。

这是否意味着Python微服务根本不再有任何HTTP服务器代码。 这将使该组件发生很大的变化。 也许最好事先决定是否要使用这种模式,因为看起来要撕掉任何HTTP服务器代码都是一项任务。

其他潜在的解决方案? 我真的很困惑,我们应该如何将一个经典的REST服务器组件升级到可扩展的RabbitMQAMQP,并将中断降到最低。

python rabbitmq amqp
1个回答
2
投票

我建议把wsgi换成asgi(nginx可以在这里提供帮助),我不知道为什么你认为rabbitmq是你问题的解决方案,因为你所描述的一切似乎都不能通过使用这种方法来解决。

据我所知,apache不支持asgi,但它允许服务器去工作,当它工作时,它可以继续服务于新进来的请求。(严重过度简化)

如果不管出于什么原因,你真的想使用job worker(rabbitmq等),那么我建议返回给用户一个 "token"(其实只是job_id),然后他们可以用这个token调用,它将报告当前的job状态或结果。

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