Achtergrondtaken uitvoeren met WebJobs in Azure-app Service

Notitie

WebJobs voor Windows-container, Linux-code en Linux-container is in preview. WebJobs voor Windows-code is algemeen beschikbaar en niet in preview.

Implementeer WebJobs met behulp van Azure Portal om een uitvoerbaar bestand of script te uploaden. U kunt achtergrondtaken uitvoeren in de Azure-app Service.

Als u in plaats van de Azure-app Service Visual Studio gebruikt om WebJobs te ontwikkelen en implementeren, raadpleegt u WebJobs implementeren met Visual Studio.

Overzicht

WebJobs is een functie van Azure-app Service waarmee u een programma of script kunt uitvoeren in hetzelfde exemplaar als een web-app. Er zijn geen extra kosten verbonden aan het gebruik van WebJobs.

U kunt de Azure WebJobs SDK met WebJobs gebruiken om veel programmeertaken te vereenvoudigen. Zie Wat is de WebJobs SDK voor meer informatie.

Azure Functions biedt een andere manier om programma's en scripts uit te voeren. Zie Kiezen tussen Flow, Logic Apps, Functions en WebJobs voor een vergelijking tussen WebJobs en Functions.

Typen webtaken

Ondersteunde bestandstypen voor scripts of programma's

De volgende bestandstypen worden ondersteund:
.cmd, .bat, .exe (met windows cmd)
.ps1 (met behulp van PowerShell)
.sh (met Bash)
.php (met PHP)
.py (met behulp van Python)
.js (met behulp van Node.js)
.jar (met Java)

De benodigde runtimes om deze bestandstypen uit te voeren, zijn al geïnstalleerd op het web-app-exemplaar.

Doorlopende versus geactiveerde webtaken

In de volgende tabel worden de verschillen tussen continue en geactiveerde webtaken beschreven:

Continu Geactiveerd
Wordt onmiddellijk gestart wanneer de webtaak wordt gemaakt. Om te voorkomen dat de taak eindigt, werkt het programma of script meestal in een eindeloze lus. Als de taak wordt beëindigd, kunt u deze opnieuw starten. Meestal gebruikt met WebJobs SDK. Wordt alleen gestart wanneer deze handmatig of volgens een schema wordt geactiveerd.
Wordt uitgevoerd op alle exemplaren waarop de web-app wordt uitgevoerd. U kunt de webtaak desgewenst beperken tot één exemplaar. Wordt uitgevoerd op één exemplaar dat Azure selecteert voor taakverdeling.
Biedt ondersteuning voor externe foutopsporing. Biedt geen ondersteuning voor foutopsporing op afstand.
Code wordt geïmplementeerd onder \site\wwwroot\app_data\Jobs\Continuous. Code wordt geïmplementeerd onder \site\wwwroot\app_data\Jobs\Triggered.

Notitie

Een web-app kan een time-out uitvoeren na 20 minuten inactiviteit en alleen aanvragen voor de werkelijke web-app kunnen de timer opnieuw instellen. De timer wordt niet gereset als de configuratie van de toepassing in de Azure-portal wordt bekeken of als aanvragen worden ingediend op de pagina met geavanceerde hulpmiddelen (https://<app_name>.scm.azurewebsites.net). Als u de web-app instelt die als host fungeert voor het continu uitvoeren van uw taak, wordt uitgevoerd volgens een schema of gebeurtenisgestuurde triggers gebruikt, schakelt u de instelling Altijd in op de Azure-configuratiepagina van uw web-app. De instelling AlwaysOn helpt ervoor te zorgen dat dit soort webtaken betrouwbaar wordt uitgevoerd. Deze functie is alleen beschikbaar in de prijscategorieën Basic, Standard en Premium.

Een doorlopende webtaak maken

Belangrijk

Wanneer u broncodebeheer voor uw toepassing hebt geconfigureerd, moeten webtaken worden geïmplementeerd als onderdeel van de integratie van broncodebeheer. Nadat broncodebeheer is geconfigureerd voor uw toepassing, kan een webtaak niet worden toegevoegd vanuit Azure Portal.

  1. Ga in Azure Portal naar de App Service-pagina van uw App Service-web-app, API-app of mobiele app.

  2. Selecteer webtaken in het linkerdeelvenster en selecteer vervolgens Toevoegen.

    Schermopname van het toevoegen van een webtaak in een App Service-app in de portal.

  3. Vul de instellingen voor webtaken toevoegen in zoals opgegeven in de tabel en selecteer Vervolgens Webtaak maken.

    Schermopname van het configureren van een doorlopende webtaak met meerdere exemplaren voor een App Service-app.

    Instelling Voorbeeldwaarde Beschrijving
    Naam myContinuousWebJob Een naam die uniek is binnen een App Service-app. Moet beginnen met een letter of een getal en mag geen speciale tekens bevatten dan '-' en '_'.
    Bestand uploaden ConsoleApp.zip Een .zip-bestand met het uitvoerbare bestand of scriptbestand en eventuele ondersteunende bestanden die nodig zijn om het programma of script uit te voeren. De ondersteunde uitvoerbare of scriptbestandstypen worden weergegeven in de sectie Ondersteunde bestandstypen .
    Type Continu De typen webtaken worden eerder in dit artikel beschreven.
    Schaal wijzigen Meerdere exemplaren Alleen beschikbaar voor continue webtaken. Bepaalt of het programma of script wordt uitgevoerd op alle exemplaren of één exemplaar. De optie voor uitvoering op meerdere exemplaren is niet van toepassing op de prijscategorieën Gratis of Gedeeld.
  4. De nieuwe webtaak wordt weergegeven op de pagina WebJobs . Als u een bericht ziet met de mededeling dat de webtaak is toegevoegd, maar u deze niet ziet, selecteert u Vernieuwen.

  5. Als u een doorlopende webtaak wilt stoppen of opnieuw wilt starten, klikt u met de rechtermuisknop op de webtaak in de lijst en selecteert u de knop Stoppen of Uitvoeren en bevestigt u de selectie.

    Schermopname van het stoppen van een doorlopende webtaak in Azure Portal.

Een handmatig geactiveerde webtaak maken

  1. Ga in Azure Portal naar de App Service-pagina van uw App Service-web-app, API-app of mobiele app.

  2. Selecteer webtaken in het linkerdeelvenster en selecteer vervolgens Toevoegen.

    Schermopname van het toevoegen van een webtaak in een App Service-app in de portal (handmatig geactiveerde webtaak).

  3. Vul de instellingen voor webtaken toevoegen in zoals opgegeven in de tabel en selecteer Vervolgens Webtaak maken.

    Schermopname van het configureren van een handmatig geactiveerde webtaak voor een App Service-app.

    Instelling Voorbeeldwaarde Beschrijving
    Naam myTriggeredWebJob Een naam die uniek is binnen een App Service-app. Moet beginnen met een letter of een getal en mag geen speciale tekens bevatten dan '-' en '_'.
    Bestand uploaden ConsoleApp1.zip Een .zip-bestand met het uitvoerbare bestand of scriptbestand en eventuele ondersteunende bestanden die nodig zijn om het programma of script uit te voeren. De ondersteunde uitvoerbare of scriptbestandstypen worden weergegeven in de sectie Ondersteunde bestandstypen .
    Type Geactiveerd De typen webtaken worden eerder in dit artikel beschreven.
    Triggers Handmatig
  4. De nieuwe webtaak wordt weergegeven op de pagina WebJobs . Als u een bericht ziet met de mededeling dat de webtaak is toegevoegd, maar u deze niet ziet, selecteert u Vernieuwen.

  5. Als u een handmatig geactiveerde webtaak wilt uitvoeren, klikt u met de rechtermuisknop op de webtaak in de lijst en selecteert u de knop Uitvoeren en bevestigt u de selectie.

    Schermopname van het uitvoeren van een handmatig geactiveerde webtaak in Azure Portal.

Een geplande webtaak maken

Er wordt ook een geplande webtaak geactiveerd. U kunt plannen dat de trigger automatisch wordt uitgevoerd volgens de planning die u opgeeft.

  1. Ga in Azure Portal naar de App Service-pagina van uw App Service-web-app, API-app of mobiele app.

  2. Selecteer webtaken in het linkerdeelvenster en selecteer vervolgens Toevoegen.

    Schermopname van het toevoegen van een webtaak in een App Service-app in de portal (geplande webtaak).

  3. Vul de instellingen voor webtaken toevoegen in zoals opgegeven in de tabel en selecteer Vervolgens Webtaak maken.

    Schermopname van het configureren van een geplande webtaak in een App Service-app.

    Instelling Voorbeeldwaarde Beschrijving
    Naam myScheduledWebJob Een naam die uniek is binnen een App Service-app. Moet beginnen met een letter of een getal en mag geen speciale tekens bevatten dan '-' en '_'.
    Bestand uploaden ConsoleApp.zip Een .zip-bestand met het uitvoerbare bestand of scriptbestand en eventuele ondersteunende bestanden die nodig zijn om het programma of script uit te voeren. De ondersteunde uitvoerbare of scriptbestandstypen worden weergegeven in de sectie Ondersteunde bestandstypen .
    Type Geactiveerd De typen webtaken worden eerder in dit artikel beschreven.
    Triggers Gepland Schakel de Functie AlwaysOn in om de planning betrouwbaar te laten werken. AlwaysOn is alleen beschikbaar in de prijscategorieën Basic, Standard en Premium.
    CRON-expressie 0 0/20 * * * * CRON-expressies worden beschreven in de volgende sectie.
  4. De nieuwe webtaak wordt weergegeven op de pagina WebJobs . Als u een bericht ziet met de mededeling dat de webtaak is toegevoegd, maar u deze niet ziet, selecteert u Vernieuwen.

  5. De geplande webtaak wordt uitgevoerd volgens het schema dat is gedefinieerd door de CRON-expressie. Als u deze handmatig op elk gewenst moment wilt uitvoeren, klikt u met de rechtermuisknop op de webtaak in de lijst en selecteert u de knop Uitvoeren en bevestigt u de selectie.

    Schermopname van het uitvoeren van een handmatig geplande webtaak in Azure Portal.

NCRONTAB-expressies

U kunt een NCRONTAB-expressie invoeren in de portal of een settings.job bestand opnemen in de hoofdmap van uw webtaak .zip bestand, zoals in het volgende voorbeeld:

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

Zie Een geactiveerde webtaak plannen voor meer informatie.

Notitie

De standaardtijdzone die wordt gebruikt om CRON-expressies uit te voeren, is Coordinated Universal Time (UTC). Als u wilt dat uw CRON-expressie wordt uitgevoerd op basis van een andere tijdzone, maakt u een app-instelling voor de functie-app met de naam WEBSITE_TIME_ZONE. Zie NCRONTAB-tijdzones voor meer informatie.

Webjobs beheren

U kunt de actieve status van afzonderlijke webtaken die op uw site worden uitgevoerd, beheren in Azure Portal. Ga naar Instellingen> WebJobs, kies de webtaak en u kunt de webtaak starten en stoppen. U kunt ook het wachtwoord bekijken en wijzigen van de webhook waarop de webtaak wordt uitgevoerd.

U kunt ook een toepassingsinstelling met de naam WEBJOBS_STOPPED toevoegen met de waarde 1 om alle webtaken die op uw site worden uitgevoerd, te stoppen. U kunt deze methode gebruiken om te voorkomen dat conflicterende webtaken worden uitgevoerd in faserings- en productiesites. U kunt op dezelfde manier een waarde voor 1 de WEBJOBS_DISABLE_SCHEDULE instelling gebruiken om geactiveerde webtaken op de site of een staging-site uit te schakelen. Voor sites moet u de optie Implementatiesite-instelling inschakelen, zodat de instelling zelf niet wordt gewisseld.

De taakgeschiedenis weergeven

  1. Selecteer Logboeken voor de webtaak die u wilt zien.

    Schermopname van het openen van logboeken voor een webtaak.

  2. Selecteer op de pagina Webtaakdetails een tijd om details voor één uitvoering weer te geven.

    Schermopname van het kiezen van een webtaakuitvoering om de gedetailleerde logboeken te bekijken.

  3. Op de pagina Details van webtaakuitvoering kunt u downloaden selecteren om een tekstbestand van de logboeken op te halen of de koppeling WebJobs-breadcrumb boven aan de pagina selecteren om logboeken voor een andere webtaak weer te geven.

Statussen van webtaken

Hier volgt een lijst met algemene webtaakstatussen:

  • Het initialiseren van de app is gestart en de webtaak doorloopt het initialisatieproces.
  • De webtaak wordt gestart.
  • De webtaak wordt uitgevoerd.
  • PendingRestart Een doorlopende webtaak wordt in minder dan twee minuten afgesloten omdat deze om welke reden dan ook is gestart en App Service wacht 60 seconden voordat de webtaak opnieuw wordt gestart. Als de doorlopende webtaak wordt afgesloten na de markering van twee minuten, wacht App Service niet de 60 seconden en start de webtaak onmiddellijk opnieuw.
  • Gestopt De webtaak is gestopt (meestal vanuit Azure Portal) en wordt momenteel niet uitgevoerd en wordt pas uitgevoerd als u deze handmatig opnieuw start, zelfs voor een doorlopende of geplande webtaak.
  • Dit kan om veel redenen gebeuren, bijvoorbeeld wanneer een langlopende webtaak de time-outmarkering bereikt.

Volgende stappen

De Azure WebJobs SDK kan worden gebruikt met WebJobs om veel programmeertaken te vereenvoudigen. Zie Wat is de WebJobs SDK voor meer informatie.