Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 解析来自rabbitmq队列的响应负载_Python_Json_Rabbitmq_Devstack - Fatal编程技术网

Python 解析来自rabbitmq队列的响应负载

Python 解析来自rabbitmq队列的响应负载,python,json,rabbitmq,devstack,Python,Json,Rabbitmq,Devstack,我在Rabbitmq消息队列中得到了Devstack(KILO版本)中各种操作的响应 现在我需要从响应中听到特定的“事件类型” 有效载荷数据如下: \"event_type\": \"compute.instance.update\" def _handle_message(self, body): event_type = body['event_type'] 2015-10-06 00:07:53,013 KeyError('event_type',) 我尝试了python代码

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

现在我需要从响应中听到特定的“事件类型”

有效载荷数据如下:

\"event_type\": \"compute.instance.update\"
def _handle_message(self, body):
    event_type = body['event_type']
2015-10-06 00:07:53,013 KeyError('event_type',)
我尝试了python代码来解析相同的代码,如下所示:

\"event_type\": \"compute.instance.update\"
def _handle_message(self, body):
    event_type = body['event_type']
2015-10-06 00:07:53,013 KeyError('event_type',)
现在的问题是,由于其中的斜杠,我得到的错误如下:

\"event_type\": \"compute.instance.update\"
def _handle_message(self, body):
    event_type = body['event_type']
2015-10-06 00:07:53,013 KeyError('event_type',)
我不想改变发送回复的方式

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

请有人帮我解决这个问题

注意:

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

或者,
简单地说,我现在需要的是使用python代码精确地匹配“event\u type”。

如果您得到KeyError,那么肯定是字典中没有该键

在您的例子中,您正在检查主体中是否存在事件类型。您甚至必须检查json主体,以查看“事件类型”键是否作为根节点的子节点实际存在。oslo消息的openstack事件通知json格式不同,因此,请尝试执行以下操作

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

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

您是否真的在任何地方解析JSON?例如,使用
json.load
。实际生成的响应仅为json格式。但在我的代码中,我需要做的是检查body中的事件类型。这就是这样的反应\“事件类型\”:“计算实例更新\”