Разбор на полезния товар на отговора от опашката на rabbitmq

Получавам отговор в опашката със съобщения на 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. В тези данни за отговор няма тези наклонени черти. Сега основният проблем е с наклонените черти.

Като алтернатива, с прости думи това, от което се нуждая сега, е да съвпадна с \"event_type\" точно с помощта на код на python.


person Murali    schedule 06.10.2015    source източник
comment
Всъщност анализирате ли някъде JSON? напр. използвайки json.loads.   -  person Thomas Orozco    schedule 06.10.2015
comment
Всъщност отговорът, който се генерира, беше само във формат Json. Но в моя код това, което трябва да направя, е да проверя за event_type в тялото. това е от този отговор като този. \тип_събитие\: \compute.instance.update\   -  person Murali    schedule 06.10.2015


Отговори (1)


Ако получавате KeyError, определено трябва да е така, че ключът не присъства в речника.

Във вашия случай вие проверявате дали event_type присъства в тялото. Ще трябва дори да проверите json тялото, за да видите дали ключът „event_type“ действително присъства като дете на основния възел. JSON форматът за известие за събитие на openstack за съобщения в Осло е различен и затова опитайте да направите следното.

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

Това трябва да е проблемът в повечето случаи за разбор на известия за събития на openstack.

person crackerplace    schedule 03.03.2016