如何使用Python SDK将变量发送到Azure事件中心

时间:2015-08-21 20:07:19

标签: python azure azure-eventhub

如果我有一个包含温度值的变量,我该如何使用ServiceBusService.send_event发送它?

2 个答案:

答案 0 :(得分:1)

这取决于您在事件中心的另一端如何使用它。如果您使用的是Azure Stream Analytics,则必须确保要发送到事件中心的格式为json,csv或arvo

如果你有一个变量,那么创建一个字典就足够了,用Python的json library序列化它并发送结果字符串。例如:

from azure.servicebus import ServiceBusService
import json;

sbs = ServiceBusService("your_namespace",
                        shared_access_key_name="your_policy_name",
                        shared_access_key_value="your_policy_secret")

# build dictionary and send value
temp = {'DeviceId': 'dev-01', 'Temperature': str(i)}
sbs.send_event('woodstove2', json.dumps(temp))

答案 1 :(得分:0)

请确保您已为EventHub创建了ServiceBus命名空间。如果没有,请参阅文章https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/的“创建活动中心”部分。

您将获得ServiceBus SAS名称&键入Service Bus Configure页面,如下所示。

enter image description here

如果服务总线不包含事件中心,您可以通过单击“事件中心”选项卡手动创建它,或使用Python SDK创建它。

from azure.servicebus import ServiceBusService

servns = '<service_bus _namespace>'
key_name = '<service_bus_sas_keyname>'  # SharedAccessKeyName from Azure portal
key_value = '<service_bus_sas_key>'  # SharedAccessKey from Azure portal
sbs = ServiceBusService(service_namespace=servns,
                        shared_access_key_name=key_name,
                        shared_access_key_value=key_value) # Create a ServiceBus Service Object
flag = sbs.create_event_hub('<event_hub_name>') # Create a Event Hub for the ServiceBus. If it exists then return true, else return false
print(flag)
event_data = '<event_data>'
sbs.send_event('<event_hub_name>', event_data) # Send event data to your Event Hub, like real-time temperature data

根据您的场景,您可以将事件数据序列化为JSON字符串,带有标题的CSV字符串为jsturtevant表示。

温度示例:

  1. JS​​ON
  2. event_data ='{“deviceId”:“dev01”,“time”:“2015-08-24 12:34:45”,“温度”:30.0}'

    1. CSV
    2. event_data ='deviceId,time,temperature \ ndev01,2015-08-24 12:34:45,30.0'

      有关ServiceBus Python SDK的更多信息,您可以参考链接“README.rst”https://github.com/Azure/azure-sdk-for-python/tree/master/azure-servicebus的“使用”部分。