Ausführen von Hintergrundaufgaben mit WebJobs in Azure App Service

Hinweis

WebJobs für Windows-Container, Linux-Code und Linux-Container befindet sich in der Vorschau. WebJobs für Windows-Code ist allgemein verfügbar und nicht in der Vorschau.

Bereitstellen von WebJobs mit dem Azure-Portal, um eine ausführbare Datei oder ein Skript hochzuladen. Sie können Hintergrundaufgaben in Azure App Service ausführen.

Wenn Sie statt Azure App Service Visual Studio zum Entwickeln und Bereitstellen von WebJobs verwenden, lesen Sie den Abschnitt Bereitstellen von WebJobs mit Visual Studio.

Übersicht

WebJobs ist ein Feature von Azure App Service, mit dem Sie ein Programm oder Skript in derselben Instanz wie eine Web-App ausführen können. Es fallen keine zusätzlichen Kosten für die Verwendung von WebJobs an.

Sie können das Azure WebJobs SDK mit WebJobs verwenden, um zahlreiche Programmieraufgaben vereinfachen. Weitere Informationen finden Sie unter Was ist das WebJobs-SDK?.

Azure Functions bietet eine weitere Möglichkeit zum Ausführen von Programmen und Skripts. Einen Vergleich zwischen WebJobs und Functions finden Sie unter Auswählen zwischen Flow, Logic Apps, Functions und WebJobs.

WebJob-Typen

Unterstützte Dateitypen für Skripts oder Programme

Die folgenden Dateitypen werden unterstützt:
.cmd, .bat, .exe (bei Verwendung von Windows cmd)
.ps1 (bei Verwendung von PowerShell)
.sh (bei Verwendung von Bash)
.php (bei Verwendung von PHP)
.py (bei Verwendung von Python)
.js (bei Verwendung von Node.js)
.jar (bei Verwendung von Java)

Die für die Ausführung dieser Dateitypen erforderlichen Laufzeiten sind bereits auf der Web-App-Instanz installiert.

Fortlaufende und ausgelöste WebJobs

Die folgende Tabelle beschreibt die Unterschiede zwischen fortlaufenden und ausgelösten WebJobs:

Fortlaufend Ausgelöst
Werden sofort nach Erstellung des WebJobs gestartet. Damit der Auftrag nicht beendet wird, wird das Programm oder Skript in der Regel in einer Endlosschleife ausgeführt. Wenn der Auftrag beendet ist, können Sie ihn neu starten. Wird in der Regel mit dem WebJobs SDK verwendet. Werden nur gestartet, wenn sie manuell oder nach einem Zeitplan ausgelöst werden.
Werden in allen Instanzen ausgeführt, in denen die Web-App ausgeführt wird. Sie können den WebJob wahlweise auf eine einzelne Instanz beschränken. Werden in einer einzelnen Instanz ausgeführt, die Azure zum Lastenausgleich auswählt.
Unterstützen Remotedebuggen. Bieten keine Unterstützung für Remotedebuggen.
Code wird unter \site\wwwroot\app_data\Jobs\Continuous bereitgestellt. Code wird unter \site\wwwroot\app_data\Jobs\Triggered bereitgestellt.

Hinweis

Für eine Web-App kann nach 20 Minuten Inaktivität ein Timeout auftreten, und dieser Zeitgeber kann nur durch Anforderungen an die tatsächliche Web-App zurückgesetzt werden. Das Anzeigen der Konfiguration der App im Azure-Portal oder das Senden von Anforderungen an die Website mit erweiterten Tools (https://<app_name>.scm.azurewebsites.net) führt nicht zum Zurücksetzen des Zeitgebers. Wenn Sie für Ihre Web-App, die den Auftrag hostet, eine kontinuierliche oder zeitplanbasierte Ausführung festlegen oder ereignisgesteuerte Trigger verwenden, aktivieren Sie auf der Azure-Konfigurationsseite Ihrer Web-App die Einstellung Always On. Die Einstellung „Always On“ sorgt dafür, dass diese Arten von WebJobs zuverlässig ausgeführt werden. Dieses Feature steht nur in den Tarifen „Basic“, „Standard“ und „Premium“ zur Verfügung.

Erstellen eines fortlaufenden WebJobs

Wichtig

Wenn Sie die Quellcodeverwaltung mit Ihrer Anwendung konfiguriert haben, sollten die Webaufträge im Rahmen der Integration der Quellcodeverwaltung bereitgestellt werden. Nachdem die Quellcodeverwaltung für Ihre Anwendung konfiguriert wurde, kann ein Webauftrag nicht über das Azure-Portal hinzugefügt werden.

  1. Navigieren Sie im Azure-Portal zur Seite App Service Ihrer Web-App, API-App oder mobilen App von App Service.

  2. Wählen Sie im linken Bereich WebJobs und dann Hinzufügen aus.

    Screenshot: Hinzufügen eines WebJobs in einer App Service-App im Portal

  3. Füllen Sie die Einstellungen für WebJob hinzufügen gemäß den Angaben in der Tabelle aus, und wählen Sie dann WebJob erstellen aus.

    Screenshot: Konfigurieren eines fortlaufenden WebJobs mit mehreren Instanzen für eine App Service-App

    Einstellung Beispielwert Beschreibung
    Name myContinuousWebJob Ein Name, der innerhalb einer App Service-App eindeutig ist. Muss mit einem Buchstaben oder einer Ziffer beginnen und darf als Sonderzeichen nur „-“ und „_“ enthalten.
    Dateiupload ConsoleApp.zip Eine ZIP-Datei, die die ausführbare Datei oder Skriptdatei sowie für die Ausführung des Programms oder Skripts erforderliche Hilfsdateien enthält. Die unterstützten Typen von ausführbarer Datei oder Skriptdatei werden im Abschnitt Unterstützte Dateitypen aufgeführt.
    Typ Fortlaufend Die WebJob-Typen werden weiter oben in diesem Artikel beschrieben.
    Skalieren Mehrere Instanzen Diese Option ist nur für fortlaufende WebJobs verfügbar. Legt fest, ob das Programm oder Skript auf allen Instanzen oder einer Instanz ausgeführt wird. Die Option zum Ausführen auf mehreren Instanzen gilt nicht für die Tarife „Free“ oder „Shared“.
  4. Der neue WebJob wird auf der Seite WebJobs angezeigt. Wenn Sie eine Meldung sehen, die besagt, dass der WebJob hinzugefügt wurde, Sie sie aber nicht sehen, wählen Sie Aktualisieren.

  5. Um einen fortlaufenden WebJob zu beenden oder neu zu starten, klicken Sie mit der rechten Maustaste auf den WebJob in der Liste, wählen Sie die Schaltfläche Beenden bzw. Ausführen aus, und bestätigen Sie dann Ihre Auswahl.

    Screenshot: Beenden eines fortlaufenden WebJobs im Azure-Portal

Erstellen eines manuell ausgelösten WebJobs

  1. Navigieren Sie im Azure-Portal zur Seite App Service Ihrer Web-App, API-App oder mobilen App von App Service.

  2. Wählen Sie im linken Bereich WebJobs und dann Hinzufügen aus.

    Screenshot: Hinzufügen eines WebJobs in einer App Service-App im Portal (manuell ausgelöster WebJob)

  3. Füllen Sie die Einstellungen für WebJob hinzufügen gemäß den Angaben in der Tabelle aus, und wählen Sie dann WebJob erstellen aus.

    Screenshot: Konfigurieren eines manuell ausgelösten WebJobs für eine App Service-App

    Einstellung Beispielwert Beschreibung
    Name myTriggeredWebJob Ein Name, der innerhalb einer App Service-App eindeutig ist. Muss mit einem Buchstaben oder einer Ziffer beginnen und darf als Sonderzeichen nur „-“ und „_“ enthalten.
    Dateiupload ConsoleApp1.zip Eine ZIP-Datei, die die ausführbare Datei oder Skriptdatei sowie für die Ausführung des Programms oder Skripts erforderliche Hilfsdateien enthält. Die unterstützten Typen von ausführbarer Datei oder Skriptdatei werden im Abschnitt Unterstützte Dateitypen aufgeführt.
    Typ Ausgelöst Die WebJob-Typen sind vorher in diesem Artikel beschrieben.
    Trigger Manuell
  4. Der neue WebJob wird auf der Seite WebJobs angezeigt. Wenn Sie eine Meldung sehen, die besagt, dass der WebJob hinzugefügt wurde, Sie sie aber nicht sehen, wählen Sie Aktualisieren.

  5. Um einen manuell ausgelösten WebJob auszuführen, klicken Sie mit der rechten Maustaste auf den WebJob in der Liste, und wählen Sie die Schaltfläche Ausführen aus. Bestätigen Sie dann Ihre Auswahl.

    Screenshot: Ausführen eines manuell ausgelösten WebJobs im Azure-Portal

Erstellen eines geplanten WebJobs

Ein geplanter WebJob wird ebenfalls ausgelöst. Sie können die automatische Auslösung des Triggers nach dem von Ihnen angegebenen Zeitplan planen.

  1. Navigieren Sie im Azure-Portal zur Seite App Service Ihrer Web-App, API-App oder mobilen App von App Service.

  2. Wählen Sie im linken Bereich WebJobs und dann Hinzufügen aus.

    Screenshot: Hinzufügen eines WebJobs in einer App Service-App im Portal (geplanter WebJob)

  3. Füllen Sie die Einstellungen für WebJob hinzufügen gemäß den Angaben in der Tabelle aus, und wählen Sie dann WebJob erstellen aus.

    Screenshot: Konfigurieren eines geplanten WebJobs in einer App Service-App

    Einstellung Beispielwert Beschreibung
    Name myScheduledWebJob Ein Name, der innerhalb einer App Service-App eindeutig ist. Muss mit einem Buchstaben oder einer Ziffer beginnen und darf als Sonderzeichen nur „-“ und „_“ enthalten.
    Dateiupload ConsoleApp.zip Eine ZIP-Datei, die die ausführbare Datei oder Skriptdatei sowie für die Ausführung des Programms oder Skripts erforderliche Hilfsdateien enthält. Die unterstützten Typen von ausführbarer Datei oder Skriptdatei werden im Abschnitt Unterstützte Dateitypen aufgeführt.
    Typ Ausgelöst Die WebJob-Typen werden weiter oben in diesem Artikel beschrieben.
    Trigger Geplant Damit die Planung zuverlässig funktioniert, aktivieren Sie das Feature „Always On“. Dieses Feature steht nur in den Tarifen „Basic“, „Standard“ und „Premium“ zur Verfügung.
    CRON-Ausdruck 0 0/20 * * * * CRON-Ausdrücke werden im folgenden Abschnitt beschrieben.
  4. Der neue WebJob wird auf der Seite WebJobs angezeigt. Wenn Sie eine Meldung sehen, die besagt, dass der WebJob hinzugefügt wurde, Sie sie aber nicht sehen, wählen Sie Aktualisieren.

  5. Der geplante WebJob wird nach dem vom CRON-Ausdruck definierten Zeitplan ausgeführt. Um ihn manuell zu einem beliebigen Zeitpunkt auszuführen, klicken Sie mit der rechten Maustaste auf den WebJob in der Liste, und wählen Sie die Schaltfläche Ausführen aus. Bestätigen Sie dann Ihre Auswahl.

    Screenshot: Ausführen eines manuell geplanten WebJobs im Azure-Portal

NCRONTAB-Ausdrücke

Sie können einen NCRONTAB-Ausdruck im Portal eingeben oder eine settings.job-Datei dem Stammverzeichnis Ihrer WebJob-ZIP-Datei hinzufügen, wie im folgenden Beispiel gezeigt:

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

Weitere Informationen finden Sie unter Planen eines ausgelösten WebJobs.

Hinweis

Die Standardzeitzone, die für die Ausführung von CRON-Ausdrücken verwendet wird, ist Coordinated Universal Time (UTC). Wenn Sie möchten, dass Ihr CRON-Ausdruck gemäß einer anderen Zeitzone ausgeführt wird, erstellen Sie eine App-Einstellung für Ihre Funktions-App mit dem Namen WEBSITE_TIME_ZONE. Weitere Informationen finden Sie unter NCRONTAB-Zeitzonen.

Verwalten von WebJobs

Sie können den Ausführungsstatus einzelner WebJobs verwalten, die auf Ihrer Website im Azure-Portal ausgeführt werden. Wechseln Sie zu Einstellungen>WebJobs, und wählen Sie den WebJob aus. Dort können Sie den WebJob starten und beenden. Sie können auch das Kennwort des Webhooks anzeigen und ändern, der den WebJob ausführt.

Sie können auch eine Anwendungseinstellung hinzufügenmit dem NamenWEBJOBS_STOPPED von dem Wert 1, um alle WebJobs zu beenden, die auf Ihrer Website ausgeführt werden. Anhand dieser Methode können Sie verhindern, dass in Konflikt stehende WebJobs sowohl in Staging- als auch in Produktionsslots ausgeführt werden. Sie können auf ähnliche Weise den Wert 1 für die WEBJOBS_DISABLE_SCHEDULE Einstellung verwenden, um ausgelöste WebJobs auf der Website oder in einem Stagingslot zu deaktivieren. Denken Sie bei Slots daran, die Einstellungsoption Bereitstellungsslot zu aktivieren, damit die Einstellung selbst nicht ausgetauscht wird.

Anzeigen des Auftragsverlaufs

  1. Wählen Sie für den WebJob, den Sie anzeigen möchten, Protokolle aus.

    Screenshot: Zugreifen auf Protokolle für einen WebJob

  2. Wählen Sie auf der Seite Details zum WebJob einen Zeitpunkt aus, um die Details für eine Ausführung anzuzeigen.

    Screenshot: Auswählen einer WebJob-Ausführung zum Anzeigen detaillierter Protokolle

  3. Auf der Seite WebJob-Ausführungsdetails können Sie Herunterladen auswählen, um eine Textdatei der Protokolle abzurufen, oder oben auf der Seite den WebJobs-Breadcrumblink auswählen, um Protokolle für einen anderen WebJob anzuzeigen.

WebJob-Status

Nachfolgend finden Sie eine Liste allgemeiner WebJob-Status:

  • Initializing: Die App wurde gestartet, und der WebJob durchläuft den Initialisierungsprozess.
  • Starting: Der WebJob wird gerade gestartet.
  • Running: Der WebJob wird ausgeführt.
  • PendingRestart: Wenn ein fortlaufender WebJob aus irgendeinem Grund weniger als zwei Minuten nach dem Start beendet wird, wartet App Service 60 Sekunden, bevor der WebJob neu gestartet wird. Wird der fortlaufende WebJob nach mehr als zwei Minuten beendet, wartet App Service nicht die 60 Sekunden ab und startet den WebJob sofort neu.
  • Stopped: Der WebJob wurde beendet (normalerweise über das Azure-Portal) und wird derzeit nicht ausgeführt. Er wird erst dann wieder ausgeführt, wenn Sie ihn manuell starten. Dies gilt selbst für einen fortlaufenden oder geplanten WebJob.
  • Aborted: Hierfür gibt es viele Gründe, z. B. wenn ein langwieriger WebJob die Timeoutmarkierung erreicht.

Nächste Schritte

Das Azure WebJobs SDK kann in Verbindung mit WebJobs zahlreiche Programmieraufgaben vereinfachen. Weitere Informationen finden Sie unter Was ist das WebJobs-SDK?.