Inicio rápido: Envío y recepción de eventos con Azure Event Hubs mediante PythonQuickstart: Send and receive events with Event Hubs using Python

Azure Event Hubs es una plataforma de streaming de macrodatos y servicio de ingesta de eventos capaz de recibir y procesar millones de eventos por segundo.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 puede procesar y almacenar los eventos, datos o telemetría generados por dispositivos y software distribuido.Event Hubs can process and store events, data, or telemetry from distributed software and devices. Los datos enviados a un centro de eventos se pueden transformar y almacenar con cualquier proveedor de análisis en tiempo real o adaptadores de procesamiento por lotes y almacenamiento.Data sent to an event hub can be transformed and stored using any real-time analytics provider or batching/storage adapters. Para más información sobre Event Hubs, consulte Azure Event Hubs y Características y terminología de Azure Event Hubs.For more information about Event Hubs, see Azure Event Hubs and Features and terminology in Azure Event Hubs.

En este inicio rápido se muestra cómo crear aplicaciones de Python para enviar o recibir eventos en un centro de eventos.This quickstart shows how to create Python applications that send events to and receive events from an event hub.

Nota

En lugar de trabajar con el inicio rápido, puede descargar y ejecutar las aplicaciones de ejemplo de GitHub.Instead of working through the quickstart, you can download and run the sample apps from GitHub. Reemplace las cadenas EventHubConnectionString y EventHubName por los valores del centro de eventos.Replace the EventHubConnectionString and EventHubName strings with your event hub values.

Requisitos previosPrerequisites

Para completar este tutorial de inicio rápido, debe cumplir los siguientes requisitos previos:To complete this quickstart, you need the following prerequisites:

  • Una suscripción de Azure.An Azure subscription. Si no tiene una, cree una cuenta gratuita antes de empezar.If you don't have one, create a free account before you begin.

  • Un espacio de nombres de Event Hubs activo y un centro de eventos, creados siguiendo las instrucciones que se indican en Inicio rápido: Creación de un centro de eventos mediante Azure Portal.An active Event Hubs namespace and event hub, created by following the instructions at Quickstart: Create an event hub using Azure portal. Tome nota del espacio de nombres y los nombres del centro de eventos para usarlos más adelante en este tutorial.Make a note of the namespace and event hub names to use later in this walkthrough.

  • El nombre de la clave de acceso compartido y el valor de clave principal del espacio de nombres de Event Hubs.The shared access key name and primary key value for your Event Hubs namespace. Obtenga el nombre y el valor de la clave de acceso; para ello, siga las instrucciones de Obtención de la cadena de conexión del portal.Get the access key name and value by following the instructions at Get connection string. El nombre de la clave de acceso predeterminada es RootManageSharedAccessKey.The default access key name is RootManageSharedAccessKey. Copie el nombre de clave y el valor de clave principal para usarlos más adelante en este tutorial.Copy the key name and the primary key value to use later in this walkthrough.

  • Python 3.4 o posterior, con pip instalado y actualizado.Python 3.4 or later, with pip installed and updated.

  • El paquete de Python para Event Hubs.The Python package for Event Hubs. Para instalar el paquete, ejecute este comando en un símbolo del sistema que tenga Python en su ruta de acceso:To install the package, run this command in a command prompt that has Python in its path:

    pip install azure-eventhub
    

    Nota

    El código de este inicio rápido usa la versión estable actual 1.3.1 del SDK de Event Hubs.The code in this quickstart uses the current stable version 1.3.1 of the Event Hubs SDK. Para el código de muestra que usa la versión preliminar del SDK, consulte 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.

Envío de eventosSend events

Para crear una aplicación de Python que envíe eventos a un centro de eventos:To create a Python application that sends events to an event hub:

  1. Abra el editor de Python que prefiera, como Visual Studio Code.Open your favorite Python editor, such as Visual Studio Code

  2. Cree un nuevo archivo denominado send.py.Create a new file called send.py. Este script envía 100 eventos a un centro de eventos.This script sends 100 events to your event hub.

  3. Pegue el código siguiente en send.py, reemplazando los valores <namespace>, <eventhub>, <AccessKeyName> y <valor de clave principal> de Event Hubs por sus valores: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. Guarde el archivo.Save the file.

Para ejecutar el script, desde el directorio en el que guardó send.py, ejecute este comando:To run the script, from the directory where you saved send.py, run this command:

start python send.py

Felicidades.Congratulations! Ha enviado mensajes a un centro de eventos.You have now sent messages to an event hub.

Recepción de eventosReceive events

Para crear una aplicación de Python que reciba eventos de un centro de eventos:To create a Python application that receives events from an event hub:

  1. En el editor de Python, cree un archivo llamado recv.py.In your Python editor, create a file called recv.py.

  2. Pegue el código siguiente en recv.py, reemplazando los valores <namespace>, <eventhub>, <AccessKeyName> y <valor de clave principal> de Event Hubs por sus valores: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. Guarde el archivo.Save the file.

Para ejecutar el script, desde el directorio en el que guardó recv.py, ejecute este comando:To run the script, from the directory where you saved recv.py, run this command:

start python recv.py

Pasos siguientesNext steps

Para más información acerca de Event Hubs, consulte los siguientes artículos:For more information about Event Hubs, see the following articles: