要建立稳定的连接,我们需要将具体的参数传递给连接字符串。
检查 TestFromConnectionString python 类以了解传递参数。
下面的代码块帮助我们理解如何将参数传递给连接字符串。
pytest.param(
"HostName={hostname};DeviceId={device_id};SharedAccessKeyName={skn};SharedAccessKey={sk}".format(
hostname=fake_hostname,
device_id=fake_device_id,
skn=fake_shared_access_key_name,
sk=fake_shared_access_key,
),
id="connection string with HostName, DeviceId, SharedAccessKeyName, and SharedAccessKey",
),
pytest.param(
"HostName={hostname};SharedAccessKeyName={skn};SharedAccessKey={sk}".format(
hostname=fake_hostname,
skn=fake_shared_access_key_name,
sk=fake_shared_access_key,
),
id="connection string without DeviceId"
)
为了更好的理解,请参考source code
为使用RegisterManager中的类、模块添加所需的Imports,try catch是捕获异常的可能方式:
from azure.iot.hub import IoTHubRegistryManager
connection_str = os.getenv("IOTHUB_CONNECTION_STR")
device_id = os.getenv("IOTHUB_DEVICE_ID")
try:
# Create Manager
registry_manager = IoTHubRegistryManager.from_connection_string(connection_str)
print("Conn String: {0}".format(connection_str))
# Send Message
send_message = "Sending c2d message 1"
registry_manager.send_c2d_message(device_id, send_message)
except Exception as ex:
print("error {0}".format(ex))
except KeyboardInterrupt:
print("iothub_registry_c2d stopped")
除了所有这些连接之外,我们还经常遇到连接问题,它们通常取决于我们使用的语言。
要更好地理解,请参阅 Microsoft 的 documentation,它让我们深入了解连接问题
由于我们使用 Python SDK 建立连接,下面的屏幕截图为我们提供了基于语言的可靠性信息。有关这方面的更多详细信息,请参阅Manage connectivity and reliable messaging by using Azure IoT Hub device SDKs
Reliability for Python SDK