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.
Créez une file d'attente appelée piyo
dans le stockage de file d'attente à partir du bouton" + File d'attente ".
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))
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'))
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,
③ Azure Functions est démarré avec Queue comme déclencheur.
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 ...)
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.
Recommended Posts