Краткое руководство. Отправка и получение событий через Центры событий Azure с использованием PythonQuickstart: Send and receive events with Event Hubs using Python

Центры событий Azure — это платформа потоковой передачи больших данных и служба приема событий, принимающая и обрабатывающая миллионы событий в секунду.Azure Event Hubs is a Big Data streaming platform and event ingestion service that can receive and process millions of events per second. Центры событий могут обрабатывать и сохранять события, данные и телеметрию от распределенных программных и аппаратных систем.Event Hubs can process and store events, data, or telemetry from distributed software and devices. Данные, отправляемые в концентратор событий, можно преобразовывать и сохранять с помощью любого поставщика аналитики в реальном времени, а также с помощью адаптеров пакетной обработки или хранения.Data sent to an event hub can be transformed and stored using any real-time analytics provider or batching/storage adapters. Дополнительные сведения о Центрах событий см. в статьях Центры событий Azure — платформа потоковой передачи больших данных и служба приема событий и Features and terminology in Azure Event Hubs (Функции и терминология в Центрах событий Azure).For more information about Event Hubs, see Azure Event Hubs and Features and terminology in Azure Event Hubs.

В этом кратком руководстве показано, как создать приложения Python, которые отправляют или получают события через концентратор событий.This quickstart shows how to create Python applications that send events to and receive events from an event hub.

Важно!

В рамках этого краткого руководства используется версия 1 пакета SDK Центров событий Azure для Python.This quickstart uses version 1 of the Azure Event Hubs Python SDK. Если вы не знакомы с Центрами событий Azure, используйте пакет SDK для Python версии 5.If you are new to Azure Event Hubs, use version 5 of the Python SDK. Краткое руководство по использованию пакета SDK для Python версии 5 см. здесь.For a quickstart that uses version 5 of the Python SDK, see this article. Чтобы перенести существующий код с версии 1 на версию 5, ознакомьтесь с этим руководством по миграции.To migrate existing code from version 1 to version 5, see the migration guide.

Примечание

Вы можете пропустить работу с кратким руководством и сразу скачать примеры приложений с сайта GitHub.Instead of working through the quickstart, you can download and run the sample apps from GitHub. Замените строки EventHubConnectionString и EventHubName значениями для реального концентратора событий.Replace the EventHubConnectionString and EventHubName strings with your event hub values.

предварительные требованияPrerequisites

Для работы с данным руководством необходимо следующее:To complete this quickstart, you need the following prerequisites:

  • Подписка Azure.An Azure subscription. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись, прежде чем начать работу.If you don't have one, create a free account before you begin.

  • Активное пространство имен Центров событий и концентратор событий, созданные по инструкциям из статьи Краткое руководство. Создание концентратора событий с помощью портала Azure.An active Event Hubs namespace and event hub, created by following the instructions at Quickstart: Create an event hub using Azure portal. Запишите имена пространства имен и концентратора событий, которые пригодятся далее в этом пошаговом руководстве.Make a note of the namespace and event hub names to use later in this walkthrough.

  • Имя ключа общего доступа и значение первичного ключа для пространства имен Центров событий.The shared access key name and primary key value for your Event Hubs namespace. Получите имя и значение ключа доступа, следуя инструкциям в разделе Get connection string from the portal (Получение строки подключения на портале).Get the access key name and value by following the instructions at Get connection string. По умолчанию для ключа доступа используется имя RootManageSharedAccessKey.The default access key name is RootManageSharedAccessKey. Скопируйте имя ключа и значение первичного ключа, которые потребуются далее в этом пошаговом руководстве.Copy the key name and the primary key value to use later in this walkthrough.

  • Python 3.4 или более поздней версии, для которого установлено и обновлено pip.Python 3.4 or later, with pip installed and updated.

  • Пакет Python для Центров событий.The Python package for Event Hubs. Чтобы установить этот пакет, выполните следующую команду в окне командной строки, где путь к Python сохранен в переменной окружения path.To install the package, run this command in a command prompt that has Python in its path:

    pip install azure-eventhub
    

    Примечание

    Код в этом кратком руководстве использует текущую стабильную версию 1.3.1 пакета SDK для Центров событий.The code in this quickstart uses the current stable version 1.3.1 of the Event Hubs SDK. Пример кода для предварительной версии пакета SDK см. на странице https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhubs/examples.For sample code that uses the preview version of the SDK, see https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/eventhub/azure-eventhubs/examples.

Отправка событийSend events

Чтобы создать приложение Python, которое отправляет события в концентратор событий, выполните следующее.To create a Python application that sends events to an event hub:

  1. Откройте редактор Python, например Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code

  2. Создайте новый файл с именем send.py.Create a new file called send.py. Этот сценарий отправляет 100 событий в ваш концентратор событий.This script sends 100 events to your event hub.

  3. Вставьте следующий код в файл send.py, заменив актуальными значениями следующие параметры Центров событий: <namespace> (пространство имен), <eventhub> (концентратор событий), <AccessKeyName> (имя ключа доступа) и <primary key value> (значение первичного ключа).Paste the following code into send.py, replacing the Event Hubs <namespace>, <eventhub>, <AccessKeyName>, and <primary key value> with your values:

    import sys
    import logging
    import datetime
    import time
    import os
    
    from azure.eventhub import EventHubClient, Sender, EventData
    
    logger = logging.getLogger("azure")
    
    # Address can be in either of these formats:
    # "amqps://<URL-encoded-SAS-policy>:<URL-encoded-SAS-key>@<namespace>.servicebus.windows.net/eventhub"
    # "amqps://<namespace>.servicebus.windows.net/<eventhub>"
    # SAS policy and key are not required if they are encoded in the URL
    
    ADDRESS = "amqps://<namespace>.servicebus.windows.net/<eventhub>"
    USER = "<AccessKeyName>"
    KEY = "<primary key value>"
    
    try:
        if not ADDRESS:
            raise ValueError("No EventHubs URL supplied.")
    
        # Create Event Hubs client
        client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
        sender = client.add_sender(partition="0")
        client.run()
        try:
            start_time = time.time()
            for i in range(100):
                print("Sending message: {}".format(i))
                message = "Message {}".format(i)
                sender.send(EventData(message))
        except:
            raise
        finally:
            end_time = time.time()
            client.stop()
            run_time = end_time - start_time
            logger.info("Runtime: {} seconds".format(run_time))
    
    except KeyboardInterrupt:
        pass
    
  4. Сохраните файл.Save the file.

Чтобы запустить скрипт, перейдите в каталог с сохраненным файлом send.py и выполните следующую команду.To run the script, from the directory where you saved send.py, run this command:

start python send.py

Поздравляем!Congratulations! Теперь вы можете отправлять сообщения в концентратор событий.You have now sent messages to an event hub.

Получение событийReceive events

Чтобы создать приложение Python, которое получает события из концентратора событий, выполните следующее.To create a Python application that receives events from an event hub:

  1. В редакторе Python создайте файл с именем recv.py.In your Python editor, create a file called recv.py.

  2. Вставьте следующий код в recv.py, заменив актуальными значениями следующие параметры Центров событий: <namespace> (пространство имен), <eventhub> (концентратор событий), <AccessKeyName> (имя ключа доступа) и <primary key value> (значение первичного ключа).Paste the following code into recv.py, replacing the Event Hubs <namespace>, <eventhub>, <AccessKeyName>, and <primary key value> with your values:

    import os
    import sys
    import logging
    import time
    from azure.eventhub import EventHubClient, Receiver, Offset
    
    logger = logging.getLogger("azure")
    
    # Address can be in either of these formats:
    # "amqps://<URL-encoded-SAS-policy>:<URL-encoded-SAS-key>@<mynamespace>.servicebus.windows.net/myeventhub"
    # "amqps://<namespace>.servicebus.windows.net/<eventhub>"
    # SAS policy and key are not required if they are encoded in the URL
    
    ADDRESS = "amqps://<namespace>.servicebus.windows.net/<eventhub>"
    USER = "<AccessKeyName>"
    KEY = "<primary key value>"
    
    
    CONSUMER_GROUP = "$default"
    OFFSET = Offset("-1")
    PARTITION = "0"
    
    total = 0
    last_sn = -1
    last_offset = "-1"
    client = EventHubClient(ADDRESS, debug=False, username=USER, password=KEY)
    try:
        receiver = client.add_receiver(
            CONSUMER_GROUP, PARTITION, prefetch=5000, offset=OFFSET)
        client.run()
        start_time = time.time()
        for event_data in receiver.receive(timeout=100):
            print("Received: {}".format(event_data.body_as_str(encoding='UTF-8')))
            total += 1
    
        end_time = time.time()
        client.stop()
        run_time = end_time - start_time
        print("Received {} messages in {} seconds".format(total, run_time))
    
    except KeyboardInterrupt:
        pass
    finally:
        client.stop()
    
  3. Сохраните файл.Save the file.

Чтобы запустить скрипт, перейдите в ту папку, где сохранен файл recv.py, и выполните следующую команду.To run the script, from the directory where you saved recv.py, run this command:

start python recv.py

Дальнейшие действияNext steps

Дополнительные сведения о Центрах событий см. в следующих статьях:For more information about Event Hubs, see the following articles: