web-dev-qa-db-fra.com

Fonctions Azure - Limitation de l'exécution parallèle

Est-il possible de limiter le nombre maximum de fonctions qui s'exécutent en parallèle?

J'ai lu la documentation et suis tombé sur ceci:

Lorsque plusieurs événements de déclenchement se produisent plus rapidement qu'un runtime de fonction à thread unique ne peut les traiter, le runtime peut appeler la fonction plusieurs fois en parallèle.

Si une application de fonction utilise le plan d'hébergement Consommation, l'application de fonction peut évoluer automatiquement. Chaque instance de l'application de fonction, qu'elle s'exécute sur le plan d'hébergement Consommation ou sur un plan d'hébergement App Service standard, peut traiter des appels de fonctions simultanés en parallèle à l'aide de plusieurs threads.

Le nombre maximal d'appels de fonctions simultanés dans chaque instance d'application de fonction varie en fonction du type de déclencheur utilisé ainsi que des ressources utilisées par d'autres fonctions au sein de l'application de fonction.

https://docs.Microsoft.com/en-gb/Azure/azure-functions/functions-reference#parallel-execution

J'utilise une fonction dans un plan App Service avec une liaison d'entrée Event Hub et je n'ai qu'une seule fonction dans mon application Function. Si je ne peux pas le limiter, quelqu'un sait-il quel sera le nombre maximal d'appels de fonctions simultanées pour ce type de configuration?

20
chris

Il n'y a aucun moyen de spécifier une concurrence maximale pour les fonctions déclenchées par Event Hubs, mais vous pouvez contrôler la taille du lot et les options de récupération comme décrit ici .

Le nombre maximal d'appels simultanés peut également varier en fonction de votre charge de travail et de l'utilisation des ressources.

Si des limites de simultanéité sont nécessaires, c'est (actuellement) quelque chose que vous devez gérer, et les articles suivants décrivent certains modèles que vous pourriez trouver utiles:

Limitation du traitement de la file d'attente de stockage Azure dans Azure Function App

Limitation du nombre de travaux simultanés sur la file d'attente Azure Functions

15
Fabio Cavalcante

Juste pour référence, je suis tombé ici dans ma recherche de limitation. Vous pouvez utiliser l'attribut [Singleton] sur votre fonction en n'assurant qu'une exécution à la fois. Peut-être pas vraiment ce que vous cherchiez et une façon très stricte de limiter, mais quand même, c'est une option.

https://github.com/Azure/azure-webjobs-sdk/wiki/Singleton

7
André Boonzaaijer