Получить объект, отправленный из клиента Python в раздел служебной шины Azure
Я подписан на раздел служебной шины Azure и пытаюсь получить объекты, отправленные с моего клиента Python. Но в моем получающем конце все, что я получаю, является чем-то вроде этого:
<__main__.User object at 0x02F694F0>
<models.AssetPayload object at 0x038EA930>
Я попытался получить в Python и в.NET. Вот фиктивный код того, что я пробовал:
class User(object):
def __init__(self, user_id, name):
self.user_id = user_id
self.name = name
user = User('123456', 'Shaphil')
# Send Message to 'myTopic'
msg = Message(bytes(user))
bus_service.send_topic_message('myTopic', msg)
# Receive Messages
msg = bus_service.receive_subscription_message('myTopic', 'AllMessages', peek_lock=False)
print msg.body
Получение фиктивного кода в C#:
var message = subscriptionClient.Receive();
var json = new StreamReader(message.GetBody<Stream>(), Encoding.UTF8).ReadToEnd();
Console.WriteLine(json);
Как я могу получить объект User (user_id и name), который был отправлен отправителем?
1 ответ
Простое решение было бы позвонить bytes()
на .__dict__
член этого экземпляра. Это стандартный Python dict
и если ваш класс прост, это будет JSON как сериализуемый "{'user_id': '123456', 'name': 'Shaphil'}"
,
Пожалуйста, попробуйте следующий фрагмент кода, чтобы создать Message
объект:
msg = Message(bytes(user.__dict__))
Любое дальнейшее беспокойство, пожалуйста, не стесняйтесь, дайте мне знать.
Это должно работать.
message = Message(json.dumps(<dictionary to be converted into bytes>).encode('utf-8'))