Azure eventhub 在 python 中发送多个浮点数组消息
Azure eventhub sending several float array messages in python
我有三个浮点数据数组 (A、B、C),我想将其发送到事件中心。
这里的问题是 classes 是嵌套的,我不知道如何调整数据才能成功发送。
这是我正在尝试的代码
logger = logging.getLogger("azure")
ADDRESS = ""
USER = ""
KEY = ""
try:
if not ADDRESS:
raise ValueError("No EventHubs URL supplied.")
# Create Event Hubs client
client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
sender = client.add_sender(partition="0")
client.run()
x_value = np.arange(100)
try:
start_time = time.time()
for i in range(100000):
A = np.asarray([1,2,3,4])
B = np.asarray([2,3,4,5])
C = np.asarray([3,4,5,6])
message = [A, B, C]
sender.send(EventData(body = message))
time.sleep(1)
except:
raise
finally:
end_time = time.time()
client.stop()
run_time = end_time - start_time
logger.info("Runtime: {} seconds".format(run_time))
except KeyboardInterrupt:
pass
这样,我看到错误 'ValueBody' object has no attribute 'append'
我认为按类型,class 对消息进行不同的编码。
我不想用串行字符串发送单个消息,而是想以并行方式发送消息,并像这样接收它们:
- 接收一个事件数据,列表形式为[A,B,C]
- 分别接收三个事件数据A、B、C,就像调用三个不同的对象基础。
对于第二种方式,我不确定它是否可行,因为我只使用一个分区,当我收到它们时可能混合了三个事件数据 A、B、C,但我不希望这样。
我已与ms支持确认,反馈是:它只适用于字符串或字节列表,但不适用于int列表。
而且你还应该注意,即使它发送一个字符串列表,当收到列表时,它会连接列表的所有元素以组成一条消息。例如,如果有一个列表 ["a","b","c","d"] 发送,当收到它时,它会显示此 "abcd" 为一整串。
本人亲测,以上信息正确
因此对于您的情况,您应该考虑将列表更改为字符串或 json 字符串。接收时,可以根据需要格式化数据。
希望对您有所帮助。
我有三个浮点数据数组 (A、B、C),我想将其发送到事件中心。
这里的问题是 classes 是嵌套的,我不知道如何调整数据才能成功发送。
这是我正在尝试的代码
logger = logging.getLogger("azure")
ADDRESS = ""
USER = ""
KEY = ""
try:
if not ADDRESS:
raise ValueError("No EventHubs URL supplied.")
# Create Event Hubs client
client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
sender = client.add_sender(partition="0")
client.run()
x_value = np.arange(100)
try:
start_time = time.time()
for i in range(100000):
A = np.asarray([1,2,3,4])
B = np.asarray([2,3,4,5])
C = np.asarray([3,4,5,6])
message = [A, B, C]
sender.send(EventData(body = message))
time.sleep(1)
except:
raise
finally:
end_time = time.time()
client.stop()
run_time = end_time - start_time
logger.info("Runtime: {} seconds".format(run_time))
except KeyboardInterrupt:
pass
这样,我看到错误 'ValueBody' object has no attribute 'append' 我认为按类型,class 对消息进行不同的编码。 我不想用串行字符串发送单个消息,而是想以并行方式发送消息,并像这样接收它们:
- 接收一个事件数据,列表形式为[A,B,C]
- 分别接收三个事件数据A、B、C,就像调用三个不同的对象基础。
对于第二种方式,我不确定它是否可行,因为我只使用一个分区,当我收到它们时可能混合了三个事件数据 A、B、C,但我不希望这样。
我已与ms支持确认,反馈是:它只适用于字符串或字节列表,但不适用于int列表。
而且你还应该注意,即使它发送一个字符串列表,当收到列表时,它会连接列表的所有元素以组成一条消息。例如,如果有一个列表 ["a","b","c","d"] 发送,当收到它时,它会显示此 "abcd" 为一整串。
本人亲测,以上信息正确
因此对于您的情况,您应该考虑将列表更改为字符串或 json 字符串。接收时,可以根据需要格式化数据。
希望对您有所帮助。