如何使用 Python SDK 将变量发送到 Azure 事件中心
How do you send a variable to Azure Event Hubs using Python SDK
如果我有一个包含温度值的变量,如何使用 ServiceBusService.send_event 发送它?
这取决于您如何在事件中心的另一端使用它。如果您使用 Azure Stream Analytics you must make sure that the format you are sending to event hubs is either json, csv, or arvo。
如果你有一个变量,创建一个字典就足够简单了,使用 Python 的 json library 序列化它并发送结果字符串。示例:
from azure.servicebus.control_client 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))
请确保您已经为 EventHub 创建了一个 ServiceBus 命名空间。如果没有,请参考文章"Create an Event Hub"部分https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/.
您将在服务总线配置页面中获得服务总线 SAS 名称和密钥,如下所示。
如果服务总线不包含事件中心,您可以通过单击选项卡 "event hubs" 手动创建它,或者使用 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 String with header as jsturtevant said.
以温度为例:
- JSON
event_data = '{"deviceId": "dev01", "time": "2015-08-24 12:34:45", "temperature": 30.0}'
- CSV
event_data = 'deviceId,time,temperature\ndev01,2015-08-24 12:34:45,30.0'
关于ServiceBus Python SDK的更多信息,可以参考link "README.rst" https://github.com/Azure/azure-sdk-for-python/tree/master/azure-servicebus.[=14]的"Usage"部分=]
如果我有一个包含温度值的变量,如何使用 ServiceBusService.send_event 发送它?
这取决于您如何在事件中心的另一端使用它。如果您使用 Azure Stream Analytics you must make sure that the format you are sending to event hubs is either json, csv, or arvo。
如果你有一个变量,创建一个字典就足够简单了,使用 Python 的 json library 序列化它并发送结果字符串。示例:
from azure.servicebus.control_client 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))
请确保您已经为 EventHub 创建了一个 ServiceBus 命名空间。如果没有,请参考文章"Create an Event Hub"部分https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/.
您将在服务总线配置页面中获得服务总线 SAS 名称和密钥,如下所示。
如果服务总线不包含事件中心,您可以通过单击选项卡 "event hubs" 手动创建它,或者使用 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 String with header as jsturtevant said.
以温度为例:
- JSON
event_data = '{"deviceId": "dev01", "time": "2015-08-24 12:34:45", "temperature": 30.0}'
- CSV
event_data = 'deviceId,time,temperature\ndev01,2015-08-24 12:34:45,30.0'
关于ServiceBus Python SDK的更多信息,可以参考link "README.rst" https://github.com/Azure/azure-sdk-for-python/tree/master/azure-servicebus.[=14]的"Usage"部分=]