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


Клиентская библиотека службы Azure Web PubSub для Python

Служба Azure Web PubSub — это управляемая Azure служба, которая помогает разработчикам легко создавать веб-приложения с функциями реального времени и шаблоном подписки на публикацию. Любой сценарий, требующий обмена сообщениями публикации и подписки в режиме реального времени между сервером и клиентами или среди клиентов, может использовать службу Azure Web PubSub. Традиционные функции реального времени, которые часто требуют опроса с сервера или отправки HTTP-запросов, также могут использовать службу Azure Web PubSub.

Эту библиотеку можно использовать на стороне сервера приложений для управления клиентскими подключениями WebSocket, как показано на следующей схеме:

The overflow diagram shows the overflow of using the service client library.

Используйте эту библиотеку для:

  • Отправка сообщений в концентраторы и группы.
  • отправка сообщений определенным пользователям и подключениям;
  • Группировка пользователей и подключений.
  • Закройте подключения.
  • Предоставление, отмена и проверка разрешений для существующего подключения.

Необходимые компоненты

  • Для использования этого пакета требуется Python 3.6 или более поздней версии.
  • Для использования этого пакета требуется подписка Azure и экземпляр службы Azure WebPubSub.
  • Существующий экземпляр службы Azure Web PubSub.

Важно!

Поддержка пакетов Python пакета Azure SDK для Python 2.7 заканчивается 01 января 2022 г. Дополнительные сведения см. в статье о поддержке пакетов Python пакета Azure SDK.

Установка пакета

Используйте эту команду для установки пакета:

python -m pip install azure-messaging-webpubsubservice

Создание и проверка подлинности WebPubSubServiceClient

Проверку подлинности можно выполнить WebPubSubServiceClient с помощью строка подключения:

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

>>> service = WebPubSubServiceClient.from_connection_string(connection_string='<connection_string>', hub='hub')

Или используйте конечную точку службы и ключ доступа:

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> from azure.core.credentials import AzureKeyCredential

>>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=AzureKeyCredential("<access_key>"))

Или используйте идентификатор Microsoft Entra:

  1. pip install azure-identity.

  2. Включите авторизацию Microsoft Entra в ресурсе Webpubsub.

  3. Обновите код, чтобы использовать DefaultAzureCredential.

    >>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
    >>> from azure.identity import DefaultAzureCredential
    >>> service = WebPubSubServiceClient(endpoint='<endpoint>', hub='hub', credential=DefaultAzureCredential())
    

Примеры

Широковещательные сообщения в формате JSON

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub1')
>>> service.send_to_all(message = {
        'from': 'user1',
        'data': 'Hello world'
    })

Клиент WebSocket получает сериализованный текст JSON: {"from": "user1", "data": "Hello world"}

Широковещательные сообщения в формате обычного текста

>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub1')
>>> service.send_to_all(message = 'Hello world', content_type='text/plain')

Клиент WebSocket получает текст: Hello world

Широковещательные сообщения в двоичном формате

>>> import io
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient
>>> service = WebPubSubServiceClient.from_connection_string('<connection_string>', hub='hub')
>>> service.send_to_all(message=io.StringIO('Hello World'), content_type='application/octet-stream')

Клиент WebSocket получает двоичный текст: b'Hello world'

Ведение журналов

Этот пакет SDK использует стандартную библиотеку ведения журнала Python. Вы можете настроить ведение журнала для печати сведений об отладке в нужном stdout месте или в любом месте.

import sys
import logging
from azure.identity import DefaultAzureCredential
>>> from azure.messaging.webpubsubservice import WebPubSubServiceClient

# Create a logger for the 'azure' SDK
logger = logging.getLogger('azure')
logger.setLevel(logging.DEBUG)

# Configure a console output
handler = logging.StreamHandler(stream=sys.stdout)
logger.addHandler(handler)

endpoint = "<endpoint>"
credential = DefaultAzureCredential()

# This WebPubSubServiceClient will log detailed information about its HTTP sessions, at DEBUG level
service = WebPubSubServiceClient(endpoint=endpoint, hub='hub', credential=credential, logging_enable=True)

Аналогичным образом можно включить подробное ведение журнала для одного вызова, logging_enable даже если оно не включено для WebPubSubServiceClient:

result = service.send_to_all(..., logging_enable=True)

Сведения о HTTP-запросе и ответе stdout печатаются в этой конфигурации ведения журнала.

Следующие шаги

Дополнительные примеры см. в клиентской библиотеке службы Azure Web PubSub для примеров Python.

Участие в разработке

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см . в лицензионном соглашении участника.

При отправке запроса на вытягивание бот CLA автоматически определяет, нужно ли предоставить соглашение об уровне обслуживания и украсить pr соответствующим образом, например "метка", "комментарий". Следуйте инструкциям бота. Это действие необходимо выполнить только один раз во всех репозиториях с помощью нашего CLA.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе "Вопросы и ответы о коде поведения" или "Команда по поведению с открытым кодом" с вопросами или комментариями.