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

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 2019 pour développer et déployer WebJobs, consultez Déployer WebJobs avec 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, application API ou application mobile. L’utilisation des tâches web 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. WebJobs n’est pas encore pris en charge pour App Service sur Linux. 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

Le tableau suivant décrit les différences entre une tâche Web continue et une tâche web déclenchée.

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.

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 un interpréteur de commandes)
  • .php (en utilisant PHP)
  • .py (en utilisant Python)
  • .js (en utilisant Node.js)
  • .jar (en utilisant Java)

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 de gauche de la page App Service de votre application, recherchez et sélectionnez WebJobs.

    Sélection de WebJobs

  3. Sur la page WebJobs, sélectionnez Ajouter.

    Page WebJob

  4. Renseignez les paramètres Ajouter une tâche web comme spécifié dans le tableau.

    Capture d’écran montrant les paramètres Ajouter une tâche web que vous devez configurer.

    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 (« - » et « _ »).
    Chargement de fichiers ConsoleApp.zip Un fichier .zip qui contient votre exécutable 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é.
  5. Sélectionnez OK.

    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.

    Liste des tâches web

  6. 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.

    Arrêt d’une tâche web continue

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

  1. Dans le portail Azure, recherchez et sélectionnez App Services.

  2. Sélectionnez votre application web, application API ou application mobile dans la liste.

  3. Dans le volet de gauche de la page App Service de votre application, sélectionnez WebJobs.

    Sélection de WebJobs

  4. Sur la page WebJobs, sélectionnez Ajouter.

    Page WebJob

  5. Renseignez les paramètres Ajouter une tâche web comme spécifié dans le tableau.

    Capture d’écran montrant les paramètres qui doivent être définis pour créer un tâche web déclenchée manuellement.

    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 (« - » et « _ »).
    Chargement de fichiers ConsoleApp.zip Un fichier .zip qui contient votre exécutable 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
  6. Sélectionnez OK.

    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.

    Liste des tâches WebJobs déclenchées

  7. Pour exécuter la tâche WebJob, cliquez avec le bouton droit sur son nom dans la liste et sélectionnez Exécuter.

    Exécuter une tâche Web

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, recherchez et sélectionnez App Services.

  2. Sélectionnez votre application web, application API ou application mobile dans la liste.

  3. Dans le volet de gauche de la page App Service de votre application, sélectionnez WebJobs.

    Sélection de WebJobs

  4. Sur la page WebJobs, sélectionnez Ajouter.

    Page WebJob

  5. Renseignez les paramètres Ajouter une tâche web comme spécifié dans le tableau.

    Ajouter une page WebJob

    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 (« - » et « _ »).
    Chargement de fichiers ConsoleApp.zip Un fichier .zip qui contient votre exécutable 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.
  6. Sélectionnez OK.

    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.

    Liste des tâches WebJobs planifiées

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. Il suffit d’aller dans Paramètres>WebJobs, de choisir 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. Cela peut être pratique 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. Sélectionnez la tâche WebJob puis, pour voir l’historique, sélectionnez Journaux.

    Bouton Journaux d’activité

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

    Détails de la tâche web

  3. À la page WebJob Run Details, sélectionnez Activer/désactiver la sortie pour afficher le texte du contenu du journal.

    Détails d'exécution de la tâche WebJob

    Pour afficher le texte de sortie dans une nouvelle fenêtre de navigateur, sélectionnez télécharger . Pour télécharger le texte, cliquez avec le bouton droit sur télécharger et utilisez les options de votre navigateur pour enregistrer le contenu du fichier.

  4. Sélectionnez le lien de navigation WebJobs en haut de la page pour accéder à une liste de tâches web.

    Barre de navigation de la tâche web

    Liste des tâches Web dans le tableau de bord d’historique

É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.