[Azure Functions / Python] Fonctions de chaîne avec liaison de stockage de file d'attente

introduction

Cet article vise à chaîner Azure Functions à l'aide de liaisons de stockage de file d'attente entre Azure Functions.

Le plan est comme suit,

Cela ressemble à ceci sur la figure.

azure-Page-2 (1).png

  1. L'utilisateur etc. a frappé curl
  2. La fonction Azure de ② démarre
  3. Le message est mis en file d'attente dans le stockage de la file d'attente
  4. Azure Functions of ③ commence par mettre en file d'attente comme déclencheur

supposition

Préparation / mise en œuvre

Préparation: ① Stockage en file d'attente

Créez une file d'attente appelée piyo dans le stockage de file d'attente à partir du bouton" + File d'attente ".

storage_account_qiita.jpg

Implémentation: ② Azure Functions

Créez des fonctions Azure pour le déclencheur HTTP à partir de VSCode et modifiez le code généré automatiquement. Ajoutez les 5 éléments du bas, "" type "," direction "," nom "," queueName "," connection "`. (S'il s'agit de VSCode, vous pouvez également l'ajouter avec une liaison supplémentaire.)

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"
    }
  ]
}

Les éléments supplémentaires sont brièvement expliqués ci-dessous. Un paramètre qui s'adapte facilement est «nom». Ce nom est le nom de l'argument reçu sur le programme python. (Au début, je ne comprenais pas cela, et la sortie du journal d'exécution de la fonction était lente, il a donc fallu du temps pour identifier la cause de l'erreur ...)

nom de l'article constant Paramètres La description
type queue Type de reliure
direction out Direction contraignante. Sortie pour sortie
name fuga1 Lors de la réception avec la fonction d'exécution pythonNom de l'argument
queueName piyo Le nom de la file d'attente créée dans les étapes ci-dessus
connection AzureWebJobsStorage Cette fois, c'est une constante car il s'agit du même compte de stockage. Saisissez-vous généralement une chaîne de connexion, etc.?

Vient ensuite le corps du code Python. Maintenant, mettez fuga1 dans l'argument de la fonction principale. Autrement dit, spécifiez le même nom que «function.json». ** Attention Si vous mettez un symbole tel que _ dans nom, cela ne fonctionnera pas. ** **

__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.')

    #Obtenir les paramètres
    name = req.params.get('name')
    #Mettre en file d'attente
    fuga1.set(name)
    
    #Valeur de retour (elle est un peu plus longue dans le cas de la génération automatique, mais elle est omise car elle n'est pas pertinente ici)
    return func.HttpResponse("\n".join(return_list))

Implémentation: ③ Azure Functions

Comme dans (2), la fonction Queue Trigger est générée automatiquement à partir de VSCode cette fois. Cette fois, seule la liaison d'entrée. Pour queueName, spécifiez piyo de Queue Storage. «name» est «fuga2». Ce nom peut être déterminé de manière unique pour chaque ʻAzure Functions`.

function.json


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

Vient ensuite le corps du code Python. Seul l'argument de la fonction principale est modifié pour le nom de variable «fuga2» spécifié dans «function.json».

__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'))

Exemple d'exécution

Si vous le frappez à partir de la boucle locale, vous pouvez voir dans le journal qu'il fonctionne.

Tout d'abord, Azure Functions of ② est démarré par requête HTTP, test_function.jpg

③ Azure Functions est démarré avec Queue comme déclencheur. queue_trigger.jpg

Vous pouvez voir qu'Azure Functions s'exécute 2 secondes après que le message est dans la file d'attente. (Fermez les yeux sur le nom de la fonction ...)

en conclusion

J'ai trouvé qu'il pouvait être enchaîné avec le déclencheur de file d'attente d'Azure Functions. Lors de la création d'un service qui fonctionne réellement, il semble que Azure Functions puisse être bien chaîné en générant correctement le nom de file d'attente et en utilisant plusieurs liaisons de sortie.

référence

Recommended Posts

[Azure Functions / Python] Fonctions de chaîne avec liaison de stockage de file d'attente
Mémo d'entrée / sortie de stockage par Python dans Azure Functions
Utiliser Python et MeCab avec Azure Functions
Curry n'importe quelle fonction avec Python ...
Introduction aux fonctions Python
Azure Functions: essayez des fonctions durables pour Python
10 fonctions du "langage avec batterie" python
Utiliser Azure Blob Storage à partir de Python
Téléchargement de fichiers vers Azure Storage (Python)
Importation et téléchargement d'images sur le stockage Azure. Avec Python + requêtes + API REST
Stockage de table Azure avec l'application PTVS Flask
Utilisation de Python et MeCab avec Azure Databricks
Fonctions Python
Essayez d'utiliser Python avec Google Cloud Functions
Manipulation d'Azure CosmosDB à partir de Python Part.2
[GCP] Exploitez Google Cloud Storage avec Python
[Azure] Hit Custom Vision Service avec Python
Utilisation des fonctions C ++ de python avec pybind11
VS Code + Azure Functions + Procédure de construction de l'environnement Python
Markov Chain Artificial Brainless avec Python + Janome (1) Introduction à Janome
Chaîne de Markov artificielle sans cervelle avec Python + Janome (2) Introduction à la chaîne de Markov
Défis MySQL du stockage externe Azure avec Django (PTVS)
Utilisez Python / Django avec Windows Azure Cloud Service!
FizzBuzz en Python3
Grattage avec Python
Statistiques avec python
Grattage avec Python
Python avec Go
Intégrer avec Python
File d'attente Python #stack
AES256 avec python
Testé avec Python
python commence par ()
avec syntaxe (Python)
# Bases de Python (fonctions)
Bingo avec python
Zundokokiyoshi avec python
Fonctions Python faciles à utiliser
bases de python: fonctions
Excel avec Python
Micro-ordinateur avec Python
Cast avec python
Apprenez la file d'attente Service Bus avec Azure SDK pour Go (1)
Entrez facilement des textes d'apprentissage Azure LUIS avec des scripts Python
Utilisation d'Azure CosmosDB à partir de Python (démarrage rapide de l'exploration)
Extraction de texte (API de lecture) avec l'API Azure Computer Vision (Python3.6)