Клиентская библиотека Реестра схем Azure для Python версии 1.2.0
Реестр схем Azure — это служба репозитория схем, размещенная Центры событий Azure, обеспечивающая хранение схем, управление версиями и управление ими. Реестр используется сериализаторами для уменьшения размера полезных данных при описании структуры полезных данных с помощью идентификаторов схем, а не полных схем.
Исходный код | Пакет (PyPi) | Справочная документация по | API Образцы | Changelog
Заявление об отказе
Поддержка пакетов Python пакета Azure SDK для Python 2.7 прекращена 1 января 2022 г. Дополнительные сведения и вопросы см. на https://github.com/Azure/azure-sdk-for-python/issues/20691
Начало работы
Установка пакета
Установите клиентую библиотеку Реестра схем Azure для Python с помощью pip:
pip install azure-schemaregistry
Предварительные требования:
Для использования этого пакета необходимо:
- Подписка Azure — создайте бесплатную учетную запись.
- Реестр - схем Azure Ниже приведено краткое руководство по созданию группы реестра схем с помощью портал Azure.
- Python 3.7 или более поздней версии — установка Python
Аутентификация клиента
Взаимодействие с реестром схем начинается с экземпляра класса SchemaRegistryClient. Конструктор клиента принимает полное пространство имен и учетные данные Azure Active Directory:
Полное пространство имен экземпляра реестра схем должно иметь формат :
<yournamespace>.servicebus.windows.net
.В конструктор необходимо передать учетные данные AAD, реализующие протокол TokenCredential . Существуют реализации протокола, доступные
TokenCredential
в пакете azure-identity. Чтобы использовать типы учетных данных, предоставляемыеazure-identity
, установите клиентская библиотека удостоверений Azure для Python с помощью pip:
pip install azure-identity
- Кроме того, чтобы использовать асинхронный API, необходимо сначала установить асинхронный транспорт, например aiohttp:
pip install aiohttp
Создайте клиент с помощью библиотеки azure-identity:
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
credential = DefaultAzureCredential()
# Namespace should be similar to: '<your-eventhub-namespace>.servicebus.windows.net/'
fully_qualified_namespace = '<< FULLY QUALIFIED NAMESPACE OF THE SCHEMA REGISTRY >>'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace, credential)
Основные понятия
Схема. Схема — это организация или структура данных. Более подробную информацию можно найти здесь.
Группа схем. Логическая группа похожих схем на основе бизнес-критериев, которая может содержать несколько версий схемы. Более подробную информацию можно найти здесь.
SchemaRegistryClient:
SchemaRegistryClient
предоставляет API для хранения и извлечения схем в реестре схем.
Примеры
В следующих разделах представлено несколько фрагментов кода, охватывающих некоторые из наиболее распространенных задач реестра схем, в том числе:
- Регистрация схемы
- Получение схемы по идентификатору
- Получение схемы по версии
- Получение идентификатора схемы
Регистрация схемы
Используйте SchemaRegistryClient.register_schema
метод для регистрации схемы.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
Получение схемы по идентификатору
Получение определения схемы и ее свойств по идентификатору схемы.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
schema_id = 'your-schema-id'
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(schema_id)
definition = schema.definition
properties = schema.properties
Получение схемы по версии
Получение определения схемы и ее свойств по версии схемы.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ["SCHEMAREGISTRY_GROUP"]
name = "your-schema-name"
version = int("<your schema version>")
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema = schema_registry_client.get_schema(group_name=group_name, name=name, version=version)
definition = schema.definition
properties = schema.properties
Получение идентификатора схемы
Получение идентификатора схемы по определению схемы и ее свойствам.
import os
from azure.identity import DefaultAzureCredential
from azure.schemaregistry import SchemaRegistryClient
token_credential = DefaultAzureCredential()
fully_qualified_namespace = os.environ['SCHEMA_REGISTRY_FULLY_QUALIFIED_NAMESPACE']
group_name = os.environ['SCHEMA_REGISTRY_GROUP']
name = "your-schema-name"
format = "Avro"
definition = """
{"namespace": "example.avro",
"type": "record",
"name": "User",
"fields": [
{"name": "name", "type": "string"},
{"name": "favorite_number", "type": ["int", "null"]},
{"name": "favorite_color", "type": ["string", "null"]}
]
}
"""
schema_registry_client = SchemaRegistryClient(fully_qualified_namespace=fully_qualified_namespace, credential=token_credential)
with schema_registry_client:
schema_properties = schema_registry_client.register_schema(group_name, name, definition, format)
id = schema_properties.id
Устранение неполадок
Общие сведения
Клиенты реестра схем вызывают исключения, определенные в Azure Core.
Ведение журнала
Эта библиотека использует стандартную библиотеку ведения журнала для ведения журнала. Основные сведения о сеансах HTTP (URL-адреса, заголовки и т. д.) регистрируются на уровне INFO.
Подробное ведение журнала на уровне DEBUG, включая тексты запросов и ответов и неотредактированные заголовки, можно включить на клиенте с помощью аргумента logging_enable
:
import sys
import logging
from azure.schemaregistry import SchemaRegistryClient
from azure.identity import DefaultAzureCredential
# Create a logger for the SDK
logger = logging.getLogger('azure.schemaregistry')
logger.setLevel(logging.DEBUG)
# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)
credential = DefaultAzureCredential()
# This client will log detailed information about its HTTP sessions, at DEBUG level
schema_registry_client = SchemaRegistryClient("your_fully_qualified_namespace", credential, logging_enable=True)
Аналогичным образом с помощью параметра logging_enable
можно включить подробное журналирование для отдельной операции (даже если этот режим не включен в клиенте):
schema_registry_client.get_schema(schema_id, logging_enable=True)
Дальнейшие действия
Больше примеров кода
Подробные примеры использования этой библиотеки для регистрации и извлечения схемы в реестре схем и из нее см. в каталоге примеров .
Участие
На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Для получения подробных сведений посетите веб-страницу https://cla.microsoft.com.
При отправке запроса на включение внесенных изменений CLA-бот автоматически определит необходимость предоставления соглашения CLA и соответствующего оформления запроса на включение внесенных изменений (например, добавление метки, комментария). Просто следуйте инструкциям бота. Будет достаточно выполнить их один раз для всех репозиториев, поддерживающих соглашение CLA.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.
Azure SDK for Python
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по