Exécuter des tâches en arrière-plan avec WebJobs dans Azure App Service

Remarque

WebJobs pour conteneur Windows, code Linuxet conteneur Linux est en préversion. WebJobs pour le code Windows est généralement disponible et non en préversion.

Déployez WebJobs à l’aide du portail Azure pour charger un fichier exécutable ou un script. Vous pouvez exécuter des tâches en arrière-plan dans Azure App Service.

Si, au lieu d’Azure App Service, vous utilisez Visual Studio pour développer et déployer WebJobs, consultez Déployer WebJobs à l’aide de Visual Studio.

Vue d’ensemble

WebJobs est une fonctionnalité Azure App Service qui vous permet d’exécuter un programme ou un script dans une même instance, en tant qu’application web. L’utilisation de WebJobs n’entraîne aucun coût supplémentaire.

Vous pouvez utiliser le Kit de développement logiciel (SDK) Azure WebJobs avec WebJobs pour simplifier de nombreuses tâches de programmation. Pour plus d’informations, consultez Présentation du Kit de développement logiciel (SDK) WebJobs Azure.

Azure Functions fournit une autre façon d’exécuter des programmes et des scripts. Pour obtenir une comparaison entre WebJobs et Functions, consultez Choisir entre Flow, Logic Apps, Functions et WebJobs.

Types de tâches web

Types de fichier pris en charge pour les scripts ou les programmes

Les types de fichiers suivants sont pris en charge :
.cmd, .bat, .exe (en utilisant une commande Windows)
.ps1 (en utilisant PowerShell)
.sh (en utilisant Bash)
.php (en utilisant PHP)
.py (en utilisant Python)
.js (en utilisant Node.js)
.jar (en utilisant Java)

Les runtimes nécessaires pour exécuter ces types de fichiers sont déjà installés sur l’instance d’application web.

WebJobs continus vs déclenchés

Le tableau suivant décrit les différences entre WebJobs continus et déclenchés :

Continue Déclenchée
Démarre immédiatement lorsque la tâche web est créée. Pour empêcher la tâche de se terminer, le programme ou le script est généralement exécuté à l’intérieur d’une boucle sans fin. Si la tâche se termine, vous pouvez la redémarrer. Généralement utilisé avec le Kit de développement logiciel (SDK) WebJobs. Démarre uniquement en cas de déclenchement manuel ou selon une planification.
S’exécute sur toutes les instances sur lesquelles l’application web s’exécute. Vous pouvez limiter la tâche web à une seule instance. S’exécute sur une seule instance sélectionnée par Azure pour l’équilibrage de charge.
Prend en charge le débogage à distance. Ne prend pas en charge le débogage à distance.
Le code est déployé sous \site\wwwroot\app_data\Jobs\Continuous. Le code est déployé sous \site\wwwroot\app_data\Jobs\Triggered.

Notes

Une application Web peut expirer après 20 minutes d’inactivité, et seules les demandes adressées à l’application Web réelle peuvent réinitialiser le minuteur. L’affichage de la configuration de l’application dans le portail Azure ou l’envoi de requêtes au site d’outils avancés (https://<app_name>.scm.azurewebsites.net) ne réinitialise pas le minuteur. Si vous configurez l’application web qui héberge votre travail pour s’exécuter en continu, selon une planification ou pour utiliser des déclencheurs en fonction des événements, activez le paramètre Toujours activé dans la page Azure Configuration de votre application web. Le paramètre Always on permet de s’assurer que ces types de tâches Web s’exécutent de manière fiable. Cette fonctionnalité est disponible uniquement dans les niveaux tarifaires De base, Standard et Premium.

Création d’une tâche web continue

Important

Lorsque le contrôle de code source est configuré pour votre application, Webjobs doit être déployé dans le cadre de l’intégration du contrôle de code source. Une fois que le contrôle de code source est configuré pour votre application, une tâche WebJob ne peut pas être ajoutée à partir du portail Azure.

  1. Dans le portail Azure, ouvrez la page App Service de votre application Web App Service, application API ou application mobile.

  2. Dans le volet gauche, sélectionnez WebJobs, puis Ajouter.

    Capture d’écran montrant comment ajouter un WebJob dans une application App Service dans le portail.

  3. Renseignez les paramètres Ajouter une tâche WebJob comme spécifié dans le tableau, puis sélectionnez Créer une tâche WebJob.

    Capture d’écran indiquant comment configurer une tâche WebJob continue à instances multiples pour une application App Service.

    Paramètre Exemple de valeur Description
    Nom myContinuousWebJob Un nom unique au sein d’une application App Service. Doit commencer par une lettre ou un chiffre et ne peut pas contenir de caractères spéciaux, à part les tirets et les traits de soulignement.
    Chargement de fichiers ConsoleApp.zip Un fichier .zip qui contient votre exécutable ou un fichier script ainsi que les fichiers de prise en charge requis pour exécuter le programme ou le script. Les types de fichiers exécutables ou scripts pris en charge sont répertoriés dans la section Types de fichiers pris en charge.
    Type Continue Les types de tâches web sont décrites précédemment dans cet article.
    Mettre à l'échelle Multi-instances Disponible uniquement pour les tâches web continues. Détermine si le programme ou le script s’exécute sur toutes les instances ou une seule instance. L’option permettant une exécution sur plusieurs instances ne s’applique pas aux niveaux tarifaires Gratuit ou Partagé.
  4. La nouvelle tâche web apparaît dans la page WebJobs. Si vous voyez un message indiquant que la tâche web a été ajoutée, mais que vous ne la voyez pas, sélectionnez Actualiser.

  5. Pour arrêter ou redémarrer une tâche WebJob continue, cliquez avec le bouton droit sur la tâche WebJob dans la liste, puis sélectionnez Arrêter ou Démarrer et confirmez votre choix.

    Capture d’écran montrant comment créer une tâche WebJob continue dans le portail Azure.

Créer une tâche web déclenchée manuellement

  1. Dans le portail Azure, ouvrez la page App Service de votre application Web App Service, application API ou application mobile.

  2. Dans le volet gauche, sélectionnez WebJobs, puis Ajouter.

    Capture d’écran montrant comment ajouter une tâche WebJob dans une application App Service dans le portail (tâche WebJob déclenchée manuellement).

  3. Renseignez les paramètres Ajouter une tâche WebJob comme spécifié dans le tableau, puis sélectionnez Créer une tâche WebJob.

    Capture d’écran indiquant comment configurer une tâche WebJob déclenchée manuellement pour une application App Service.

    Paramètre Exemple de valeur Description
    Nom myTriggeredWebJob Un nom unique au sein d’une application App Service. Doit commencer par une lettre ou un chiffre et ne peut pas contenir de caractères spéciaux, à part les tirets et les traits de soulignement.
    Chargement de fichiers ConsoleApp1.zip Un fichier .zip qui contient votre exécutable ou un fichier script ainsi que les fichiers de prise en charge requis pour exécuter le programme ou le script. Les types de fichiers exécutables ou scripts pris en charge sont répertoriés dans la section Types de fichiers pris en charge.
    Type Déclenchée Les types de WebJobs sont décrits précédemment dans cet article.
    Déclencheurs Manuel
  4. La nouvelle tâche web apparaît dans la page WebJobs. Si vous voyez un message indiquant que la tâche web a été ajoutée, mais que vous ne la voyez pas, sélectionnez Actualiser.

  5. Pour exécuter une tâche WebJob déclenchée manuellement, cliquez avec le bouton droit sur la tâche WebJob dans la liste, sélectionnez le bouton Exécuter , puis confirmez votre sélection.

    Capture d’écran montrant comment exécuter une tâche WebJob déclenchée manuellement dans le portail Azure.

Créer une tâche web planifiée

Une tâche Webjob planifiée est également déclenchée. Vous pouvez planifier le déclencheur pour qu’il se produise automatiquement selon la planification que vous spécifiez.

  1. Dans le portail Azure, ouvrez la page App Service de votre application Web App Service, application API ou application mobile.

  2. Dans le volet gauche, sélectionnez WebJobs, puis Ajouter.

    Capture d’écran montrant comment ajouter une tâche WebJob dans une application App Service dans le portail (tâche WebJob planifiée).

  3. Renseignez les paramètres Ajouter une tâche WebJob comme spécifié dans le tableau, puis sélectionnez Créer une tâche WebJob.

    Capture d’écran montrant comment configurer tâche WebJob planifiée dans une application App Service.

    Paramètre Exemple de valeur Description
    Nom myScheduledWebJob Un nom unique au sein d’une application App Service. Doit commencer par une lettre ou un chiffre et ne peut pas contenir de caractères spéciaux, à part les tirets et les traits de soulignement.
    Chargement de fichiers ConsoleApp.zip Un fichier .zip qui contient votre exécutable ou un fichier script ainsi que les fichiers de prise en charge requis pour exécuter le programme ou le script. Les types de fichiers exécutables ou scripts pris en charge sont répertoriés dans la section Types de fichiers pris en charge.
    Type Déclenchée Les types de tâches web sont décrites précédemment dans cet article.
    Déclencheurs Planifiée Pour que la planification fonctionne correctement, activez la fonctionnalité Toujours actif. La fonctionnalité Toujours actif est disponible uniquement dans les niveaux tarifaires De base, Standard et Premium.
    Expression CRON 0 0/20 * * * * Les expressions CRON sont décrites dans la section suivante.
  4. La nouvelle tâche web apparaît dans la page WebJobs. Si vous voyez un message indiquant que la tâche web a été ajoutée, mais que vous ne la voyez pas, sélectionnez Actualiser.

  5. La tâche WebJob planifiée est exécutée à la planification définie par l’expression CRON. Pour exécuter une tâche WebJob planifiée, cliquez avec le bouton droit sur la tâche WebJob dans la liste, sélectionnez le bouton Exécuter, puis confirmez votre sélection.

    Capture d’écran montrant comment exécuter une tâche WebJob planifiée dans le portail Azure.

Expressions NCRONTAB

Vous pouvez entrer une expression NCRONTAB dans le portail ou inclure un fichier settings.job à la racine du fichier .zip de votre tâche web, comme dans l’exemple suivant :

{
    "schedule": "0 */15 * * * *"
}

Pour en savoir plus, consultez Planification d’un WebJob déclenché.

Notes

Le fuseau horaire par défaut utilisé pour exécuter les expressions CRON est le Temps universel coordonné (UTC). Pour que votre expression CRON s’exécute sur un autre fuseau horaire, créez un paramètre d’application nommé WEBSITE_TIME_ZONE pour votre application de fonction. Pour plus d’informations, consultez Fuseaux horaires NCRONTAB.

Gérer les tâches WebJobs

Vous pouvez gérer l’état d’exécution des tâches WebJobs individuelles exécutées sur votre site dans le portail Azure. Accédez à Paramètres>WebJobs, choisissez la tâche WebJob, et vous pouvez démarrer et arrêter la tâche WebJob. Vous pouvez également afficher et modifier le mot de passe du webhook qui exécute tâche WebJob.

Vous pouvez également ajouter un paramètre d’application nommé WEBJOBS_STOPPED avec une valeur de 1 pour arrêter toutes les tâches WebJobs en cours d’exécution sur votre site. Vous pouvez utiliser cette méthode pour empêcher les tâches WebJobs conflictuelles de s’exécuter à la fois dans les emplacements de préproduction et dans ceux de production. Vous pouvez également utiliser une valeur de 1 pour le paramètre WEBJOBS_DISABLE_SCHEDULE pour désactiver les tâches WebJobs déclenchées sur le site ou dans un emplacement de préproduction. Pour les emplacements, n’oubliez pas d’activer l’option Paramètre des emplacements de déploiement afin que le paramètre lui-même ne soit pas échangé.

Afficher l'historique des tâches

  1. Pour la tâche WebJob que vous souhaitez voir, sélectionnez Journaux.

    Capture d’écran montrant comment accéder aux journaux dans une tâche WebJob.

  2. À la page Détails de la tâche web, sélectionnez une heure pour afficher les détails d’une exécution.

    Capture d’écran montrant comment choisir une exécution de tâche WebJob pour voir ses journaux d’activité détaillés.

  3. Dans la page Détails de l’exécution de la tâche WebJob, vous pouvez sélectionner Télécharger pour obtenir un fichier texte des journaux, ou sélectionner le lien barre de navigation WebJobs en haut de la page pour afficher les journaux d’une autre tâche WebJob.

États des tâches WebJob

Vous trouverez ci-après la liste des états courants des tâches WebJob :

  • Initialisation L’application a démarré et la tâche WebJob est en cours de processus d’initialisation.
  • Démarrage La tâche WebJob démarre le processus/script.
  • Exécution La tâche WebJob est en cours d’exécution.
  • En attente de redémarrage Une tâche WebJob continue s’arrête en moins de deux minutes depuis son démarrage pour une raison quelconque, et App Service attend 60 secondes avant de redémarrer la tâche web. Si la tâche WebJob continue se termine après la marque de deux minutes, App Service n’attend pas les 60 secondes et redémarre immédiatement la tâche WebJob.
  • Arrêté La tâche WebJob a été arrêtée (généralement à partir du Portail Azure) et n’est pas en cours d’exécution et ne s’exécutera pas tant que vous ne la redémarrerez pas manuellement, même pour une tâche WebJob continue ou planifiée.
  • Abandonnée Cela peut se produire pour de nombreuses raisons, par exemple lorsqu’une tâche WebJob de longue durée atteint le marqueur de délai d’expiration.

Étapes suivantes

Le SDK Azure WebJobs peut être utilisé avec WebJobs pour simplifier de nombreuses tâches de programmation. Pour plus d’informations, consultez Présentation du Kit de développement logiciel (SDK) WebJobs Azure.