Клиентская библиотека службы Azure Web PubSub для Python
Служба Azure Web PubSub — это управляемая Azure служба, которая помогает разработчикам легко создавать веб-приложения с функциями реального времени и шаблоном подписки на публикацию. Любой сценарий, требующий обмена сообщениями публикации и подписки в режиме реального времени между сервером и клиентами или среди клиентов, может использовать службу Azure Web PubSub. Традиционные функции реального времени, которые часто требуют опроса с сервера или отправки HTTP-запросов, также могут использовать службу Azure Web PubSub.
Эту библиотеку можно использовать на стороне сервера приложений для управления клиентскими подключениями WebSocket, как показано на следующей схеме:
Используйте эту библиотеку для:
- Отправка сообщений в концентраторы и группы.
- отправка сообщений определенным пользователям и подключениям;
- Группировка пользователей и подключений.
- Закройте подключения.
- Предоставление, отмена и проверка разрешений для существующего подключения.
Необходимые компоненты
- Для использования этого пакета требуется 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:
pip install
azure-identity
.Обновите код, чтобы использовать 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.
В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе "Вопросы и ответы о коде поведения" или "Команда по поведению с открытым кодом" с вопросами или комментариями.