【发布时间】:2020-01-17 07:27:34
【问题描述】:
我的系统架构看起来与问题here 中发布的图非常相似。我的实现和发布的问题之间的主要区别在于,我将使用 fastapi/flask 作为 web 服务器(在 python 中)和 rabbitmq 进行消息传递。
我的高级伪代码(使用fastAPI)如下:
from fastapi import APIRouter
from starlette.responses import Response
router = APIRouter()
@router.post("/users/{message}")
async def provide_suggestions(message: str, response: Response):
uuid = generate_uuid(message)
message_dict = {"uuid": uuid, "data": message}.
result = await post_message_to_rabbit_mq(message_dict)
response.status_code = SOME_VALID_HTTP_RESPONSE_CODE # what would this be?
问题 1:HTTP 响应代码是什么?基本上,Web服务器需要在一定时间后通知客户端返回并检查结果(然后返回建议)。
一旦网络服务器通过rabbitmq 发布消息,工作人员将根据消息生成相关建议(通过查找数据库)。该消息连同 uuid 将被发送回另一个 rabbitmq 消息队列。现在网络服务器变成了消费者。
问题 2:假设网络服务器注册为出口路径上消息队列的消费者,网络服务器是否会在消息队列的单独线程上获取数据?
问题3:客户端和服务器可以通过web-sockets异步通信,而不是等待客户端的另一个HTTP请求发送建议?
【问题讨论】:
标签: python flask websocket rabbitmq fastapi