Библиотеки службы "Сетка событий Azure" для PythonEvent Grid libraries for Python
"Сетка событий Azure" — это полностью управляемая интеллектуальная служба маршрутизации событий, которая обеспечивает равномерное потребление событий с помощью модели "публикация — подписка".Azure Event Grid is a fully-managed intelligent event routing service that allows for uniform event consumption using a publish-subscribe model.
См. дополнительные сведения о службе "Сетка событий Azure" и начните работу с помощью краткого руководства по событиям хранилища BLOB-объектов Azure.Learn more about Azure Event Grid and get started with the Azure Blob storage event tutorial.
Пакет SDK для публикацииPublish SDK
Создавайте события, выполняйте аутентификацию и публикацию в разделы с помощью пакета SDK для публикации службы "Сетка событий Azure".Authenticate, create, handle, and publish events to topics using the Azure Event Grid publish SDK.
УстановкаInstallation
Установите пакет с помощью pip:Install the package with pip:
pip install azure-eventgrid
ПримерExample
Следующий код публикует события в раздел.The following code publishes an event to a topic. Ключ раздела и конечную точку можно получить на портале Azure или с помощью Azure CLI:You can retrieve the topic key and endpoint through the Azure Portal or through the Azure CLI:
endpoint=$(az eventgrid topic show --name <topic_name> -g gridResourceGroup --query "endpoint" --output tsv)
key=$(az eventgrid topic key list --name <topic_name> -g gridResourceGroup --query "key1" --output tsv)
from datetime import datetime
from azure.eventgrid import EventGridClient
from msrest.authentication import TopicCredentials
def publish_event(self):
credentials = TopicCredentials(
self.settings.EVENT_GRID_KEY
)
event_grid_client = EventGridClient(credentials)
event_grid_client.publish_events(
"your-endpoint-here",
events=[{
'id' : "dbf93d79-3859-4cac-8055-51e3b6b54bea",
'subject' : "Sample subject",
'data': {
'key': 'Sample Data'
},
'event_type': 'SampleEventType',
'event_time': datetime(2018, 5, 2),
'data_version': 1
}]
)
Пакет SDK для управленияManagement SDK
Создавайте, обновляйте и удаляйте экземпляры, разделы и подписки службы "Сетка событий" с помощью пакета SDK для управления.Create, update, or delete Event Grid instances, topics, and subscriptions with the management SDK.
УстановкаInstallation
Установите пакет с помощью pip:Install the package with pip:
pip install azure-mgmt-eventgrid
ПримерExample
В следующем примере создается пользовательский раздел и подписка на раздел для конечной точки.The following creates a custom topic and subscribes an endpoint to the topic. Затем код отправляет событие в раздел по протоколу HTTPS.The code then sends an event to the topic through HTTPS. RequestBin является сторонним средством с открытым кодом, позволяющим создать конечную точку и просматривать запросы, отправленные на нее.RequestBin is an open source, third-party tool that enables you to create an endpoint, and view requests that are sent to it. Последовательно выберите пункты RequestBinи щелкните Создать RequestBin.Go to RequestBin, and click Create a RequestBin. Скопируйте URL-адрес ячейки, так как он понадобится при подписке на тему.Copy the bin URL, because you need it when subscribing to the topic.
from azure.mgmt.resource import ResourceManagementClient
from azure.mgmt.eventgrid import EventGridManagementClient
import requests
RESOURCE_GROUP_NAME = 'gridResourceGroup'
TOPIC_NAME = 'gridTopic1234'
LOCATION = 'westus2'
SUBSCRIPTION_ID = 'YOUR_SUBSCRIPTION_ID'
SUBSCRIPTION_NAME = 'gridSubscription'
REQUEST_BIN_URL = 'YOUR_REQUEST_BIN_URL'
# create resource group
resource_client = ResourceManagementClient(credentials, SUBSCRIPTION_ID)
resource_client.resource_groups.create_or_update(
RESOURCE_GROUP_NAME,
{
'location': LOCATION
}
)
event_client = EventGridManagementClient(credentials, SUBSCRIPTION_ID)
# create a custom topic
event_client.topics.create_or_update(RESOURCE_GROUP_NAME, TOPIC_NAME, LOCATION)
# subscribe to a topic
scope = '/subscriptions/'+SUBSCRIPTION_ID+'/resourceGroups/'+RESOURCE_GROUP_NAME+'/providers/Microsoft.EventGrid/topics/'+TOPIC_NAME
event_client.event_subscriptions.create(scope, SUBSCRIPTION_NAME,
{
'destination': {
'endpoint_url': REQUEST_BIN_URL
}
}
)
# send an event to topic
# get endpoint url
url = event_client.event_subscriptions.get_full_url(scope, SUBSCRIPTION_NAME).endpoint_url
# get key
key = event_client.topics.list_shared_access_keys(RESOURCE_GROUP_NAME,TOPIC_NAME).key1
headers = {'aeg-sas-key': key}
s = requests.get('https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/event-grid/customevent.json')
r = requests.post(url, data=s, headers=headers)
print(r.status_code)
print(r.content)
Перейдите по URL-адресу RequestBin, созданному ранее, чтобы увидеть отправленное событие.Browse to the RequestBin URL created earlier to see the event just sent.
Очистка ресурсовClean up resources
az group delete --name gridResourceGroup
ПодробнееLearn more
Получение событий с помощью пакета SDK службы "Сетка событий"Receive events using the Event Grid SDK