[Azure-Funktionen / Python] Kettenfunktionen mit Warteschlangenspeicherbindung

Einführung

Dieser Artikel zielt darauf ab, Azure-Funktionen mithilfe von Warteschlangenspeicherbindungen zwischen Azure-Funktionen zu verketten.

Der Umriss ist wie folgt:

In der Abbildung sieht es so aus.

azure-Page-2 (1).png

  1. Benutzer usw. drücken Curl
  2. Die Azure-Funktion von ② wird gestartet
  3. Die Nachricht befindet sich im Warteschlangenspeicher in der Warteschlange
  4. Die Azure-Funktionen von ③ beginnen mit der Warteschlange als Auslöser

Annahme

Vorbereitung / Durchführung

Vorbereitung: ① Warteschlangenspeicher

Erstellen Sie eine Warteschlange mit dem Namen "piyo" im Warteschlangenspeicher über die Schaltfläche "+ Warteschlange".

storage_account_qiita.jpg

Implementierung: ② Azure-Funktionen

Erstellen Sie Azure-Funktionen für den HTTP-Trigger aus VSCode und ändern Sie den automatisch generierten Code. Fügen Sie die unteren 5 Elemente hinzu, "Typ", "Richtung", "Name", "Warteschlangenname", "Verbindung". (Wenn es sich um VSCode handelt, können Sie es auch mit Add Binding hinzufügen.)

function.json


{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "authLevel": "anonymous",
      "type": "httpTrigger",
      "direction": "in",
      "name": "req",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "$return"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "fuga1",
      "queueName": "piyo",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Die zusätzlichen Punkte werden im Folgenden kurz erläutert. Eine Einstellung, die leicht passt, ist "Name". Dieser Name ist der Argumentname, der im Python-Programm empfangen wird. (Zuerst habe ich das nicht verstanden und die Ausgabe des Funktionsausführungsprotokolls war langsam, daher dauerte es einige Zeit, um die Fehlerursache zu identifizieren ...)

Artikelname Konstante Parameter Erläuterung
type queue Art der Bindung
direction out Bindungsrichtung. Out für die Ausgabe
name fuga1 Beim Empfang mit Python-AusführungsfunktionArgumentname
queueName piyo Der Name der Warteschlange, die in den obigen Schritten erstellt wurde
connection AzureWebJobsStorage Diesmal ist es eine Konstante, da es sich um dasselbe Speicherkonto handelt. Geben Sie normalerweise eine Verbindungszeichenfolge usw. ein?

Als nächstes folgt der Python-Code. Setzen Sie nun fuga1 in das Argument der Hauptfunktion. Geben Sie den gleichen Namen wie "function.json" an. ** Achtung Wenn Sie ein Symbol wie "_" in "name" einfügen, funktioniert dies nicht. ** ** **

__init__.py


import logging
import azure.functions as func


def main(req: func.HttpRequest, fuga1: func.Out[str]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    #Parameter abrufen
    name = req.params.get('name')
    #In die Warteschlange stellen
    fuga1.set(name)
    
    #Rückgabewert (Bei der automatischen Generierung ist er etwas länger, wird jedoch weggelassen, da er hier nicht relevant ist.)
    return func.HttpResponse("\n".join(return_list))

Implementierung: ③ Azure-Funktionen

Wie in (2) wird die Queue Trigger-Funktion dieses Mal automatisch aus VSCode generiert. Diesmal nur die Eingabebindung. Geben Sie für "queueName" "piyo" von "Queue Storage" an. name ist fuga2. Dieser "Name" kann für jede "Azure-Funktion" eindeutig bestimmt werden.

function.json


{
  "scriptFile": "__init__.py",
  "bindings": [
    {
      "name": "fuga2",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "piyo",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Als nächstes folgt der Python-Code. Nur das Argument der Hauptfunktion wird in den in function.json angegebenen Variablennamen fuga2 geändert.

__init__.py


import logging
import azure.functions as func


def main(fuga2: func.QueueMessage) -> None:
    logging.info('Python queue trigger function processed a queue item: %s',
                 fuga2.get_body().decode('utf-8'))

Ausführungsbeispiel

Wenn Sie es von der lokalen Locke aus treffen, können Sie dem Protokoll entnehmen, dass es funktioniert.

Zunächst werden die Azure-Funktionen von ② durch eine HTTP-Anforderung gestartet. test_function.jpg

③ Azure-Funktionen werden mit der Warteschlange als Auslöser gestartet. queue_trigger.jpg

Sie können sehen, dass Azure-Funktionen 2 Sekunden nach der Nachricht in der Warteschlange ausgeführt werden. (Schließen Sie Ihre Augen auf den Funktionsnamen ...)

abschließend

Ich habe festgestellt, dass es mit dem Warteschlangentrigger von Azure-Funktionen verkettet werden kann. Wenn Sie einen Dienst erstellen, der tatsächlich funktioniert, können Azure-Funktionen anscheinend gut verkettet werden, indem der Name der Warteschlange gut generiert und mehrere Out-Bindungen verwendet werden.

Referenz

Recommended Posts

[Azure-Funktionen / Python] Kettenfunktionen mit Warteschlangenspeicherbindung
Speichereingabe- / Ausgabememo von Python in Azure-Funktionen
Verwenden Sie Python und MeCab mit Azure-Funktionen
Curry jede Funktion mit Python ....
Einführung in Python-Funktionen
Azure-Funktionen: Probieren Sie dauerhafte Funktionen für Python aus
10 Funktionen von "Sprache mit Batterie" Python
Verwenden Sie Azure Blob Storage aus Python
Datei-Upload in Azure Storage (Python)
Hochladen und Herunterladen von Bildern in Azure Storage. Mit Python + Anfragen + REST API
Azure-Tabellenspeicher mit PTVS Flask-App
Verwenden von Python und MeCab mit Azure Databricks
Python-Funktionen
Versuchen Sie, Python mit Google Cloud-Funktionen zu verwenden
Bearbeiten von Azure CosmosDB aus Python Part.2
[GCP] Betreiben Sie Google Cloud Storage mit Python
[Azure] Klicken Sie mit Python auf Custom Vision Service
Verwenden von C ++ - Funktionen aus Python mit pybind11
VS Code + Azure-Funktionen + Python-Umgebungskonstruktionsverfahren
Markov Chain Artificial Brainless mit Python + Janome (1) Einführung in Janome
Markov-Kette Künstlich Gehirnlos mit Python + Janome (2) Einführung in die Markov-Kette
MySQL-Herausforderungen für externen Azure-Speicher mit Django (PTVS)
Verwenden Sie Python / Django mit dem Windows Azure Cloud Service!
FizzBuzz in Python3
Scraping mit Python
Statistik mit Python
Scraping mit Python
Python mit Go
In Python integrieren
Python #stack Warteschlange
AES256 mit Python
Getestet mit Python
Python beginnt mit ()
mit Syntax (Python)
# Python-Grundlagen (Funktionen)
Bingo mit Python
Zundokokiyoshi mit Python
Python Einfach zu bedienende Funktionen
Python-Grundlagen: Funktionen
Excel mit Python
Mikrocomputer mit Python
Mit Python besetzen
Lernen Sie die Service Bus-Warteschlange mit Azure SDK for Go kennen (1)
Geben Sie Azure LUIS-Lerntexte einfach mit Python-Skripten ein
Arbeiten mit Azure CosmosDB aus Python (Schnellstart)
Textextraktion (Lese-API) mit Azure Computer Vision-API (Python3.6)