J'ai une fonction Azure exécutée sur une minuterie toutes les quelques minutes qui, après une durée d'exécution variée, commencera à échouer à chaque fois qu'elle s'exécutera en raison d'une API externe et en appuyant manuellement sur le bouton de redémarrage dans le portail Azure, le problème sera résolu et le travail fonctionne à nouveau.
Existe-t-il un moyen de faire redémarrer une fonction azure ou de faire redémarrer une fonction azure en externe via un hook Web ou une requête API ou s'exécutant sur un minuteur
J'ai essayé d'utiliser le service de gestion des API Azures qui peut être utilisé pour redémarrer d'autres types de services d'application dans Azure, mais il s'avère qu'il n'y a pas de fonctionnalité dans l'API pour demander le redémarrage d'une fonction azure, a également examiné Power Shell et il semble que ce soit le même problème, vous pouvez redémarrer différents services d'application mais pas les fonctions azure
J'ai essayé de travailler avec l'API https://docs.microsoft.com/en-us/rest/api / azur / Exemple de requête d'API où vous pouvez répertorier des fonctions dans une fonction Azure GET https://management.azure.com/subscriptions/ {subscriptionId} / resourceGroups / {resourceGroupName } /providers/Microsoft.Web/sites/ {name} / functions? api-version = 01/08/2016
mais il n'y a pas de fonctionnalité pour redémarrer une fonction azure à partir de ce que j'ai recherché
En gros, je veux redémarrer la fonction Azure comme si je devais appuyer sur ce bouton Boutons d'arrêt / démarrage manuel et de redémarrage des fonctions Azure dans le portail azure
car il y a un cas où le travail entre dans un mauvais état à chaque fois qu'il s'exécute à cause d'une API externe sur laquelle je n'ai aucun contrôle et que le redémarrage manuel du travail redémarre
3 Réponses :
Les fonctions Azure de par leur nature sont appelées à un événement. Cela peut être une minuterie, un déclencheur ou une invocation comme un événement HTTP. Ils ne peuvent pas être redémarrés en soi, c'est-à-dire que si une fonction lance une exception, vous ne pouvez pas trouver l'instance spécifique et la réexécuter en utilisant la fonctionnalité prête à l'emploi.
Cependant, vous pouvez trouver une solution plus fiable:
C'est hors de propos. Par exemple, j'ai besoin de redémarrer des fonctions car il semble que chaque déclencheur http crée une nouvelle fonction plutôt que de réutiliser les fonctions existantes, qui ne meurent jamais, et de cette façon ils finissent par «manger» toutes les connexions de base de données disponibles sans les libérer.
Pourquoi n'essayez-vous pas ci-dessous l'API ARM. Étant donné que la fonction Azure relève également de la catégorie App service, cela peut parfois être utile, https://docs.microsoft.com/en-us/ rest / api / appservice / webapps / restart
Une autre façon de redémarrer votre fonction consiste à utiliser le paramètre "watchDirectories" dans le fichier host.json. Si votre host.json ressemble à ceci:
Watched directory change of type 'Changed' detected for 'D:\home\site\wwwroot\Toggle\restart.conf' Host configuration has changed. Signaling restart
Vous pouvez activer le redémarrage en utilisant l'instruction suivante dans une fonction:
System.IO.File.WriteAllText("D:/home/site/wwwroot/Toggle/restart.conf", DateTime.Now.ToString());
En regardant les logs, la fonction se recharge car elle a détecté le changement de fichier dans le répertoire:
{ "version": "2.0", "watchDirectories": [ "Toggle" ] }
Malheureusement, cette solution ne fonctionne pas lorsque le dossier du code de fonction est protégé en écriture: la variable de paramétrage d'application WEBSITE_RUN_FROM_PACKAGE est définie sur 1.
Que veux-tu accomplir? Pourquoi avez-vous besoin de redémarrer explicitement une application Azure Function?
Pouvez-vous clarifier ce que vous entendez par redémarrage? La fonction «démarre» chaque fois que vous effectuez un appel HTTP. Voulez-vous poser des questions sur la mise à jour du code de fonction?
a modifié la question pour donner plus d'informations requises