Поделиться через


Клиентская библиотека Реестра схем 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

Предварительные требования:

Для использования этого пакета необходимо:

Аутентификация клиента

Взаимодействие с реестром схем начинается с экземпляра класса 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 с любыми дополнительными вопросами или комментариями.