【问题标题】:Parsing response payload from rabbitmq queue从rabbitmq队列解析响应负载
【发布时间】:2025-12-21 16:20:08
【问题描述】:

我在 Rabbitmq 消息队列中收到了 Devstack(KILO 版本)中各种操作的响应。

现在我需要从响应中收听特定的“event_type”。

有效载荷数据如下:

\"event_type\": \"compute.instance.update\"

我试过用python代码解析,同样如下:

def _handle_message(self, body):
    event_type = body['event_type']

现在的问题是,由于其中的斜线,我收到如下错误:

2015-10-06 00:07:53,013 KeyError('event_type',)

我不打算改变发送响应的方式。

我可以修改我尝试解析它的方式。

请有人帮我解决这个问题。

注意:

我得到了在以前版本的 devstack 中运行良好的代码。在那些响应数据中没有那些斜杠。现在主要问题是斜杠。

或者, 简而言之,我现在需要的是完全使用 python 代码匹配“event_type”。

【问题讨论】:

  • 您实际上是在任何地方解析 JSON 吗?例如。使用json.loads
  • 实际上生成的响应只是 Json 格式。但在我的代码中,我需要做的是检查正文中的 event_type。那是来自这样的回应。 \"event_type\": \"compute.instance.update\"

标签: python json rabbitmq devstack


【解决方案1】:

如果您收到 KeyError ,则肯定是字典中不存在该键。

在您的情况下,您正在检查 event_type 是否存在于正文中。您甚至必须检查 json 正文以查看“event_type”键是否实际上作为root 节点。oslo 消息传递的 openstack 事件通知 json 格式不同,因此,请尝试执行以下操作。

jsonbody = body['oslo.message']
event_type = jsonbody['event_type']

这应该是大多数情况下 openstack 事件通知解析的问题。

【讨论】: