Wiederkehrende Aufgaben mit Azure Web Jobs

Welcher Softwareentwickler kennt sie nicht: die kleinen Scripts oder Aufgaben die man immer wieder ausführen muss. Häufig wird dafür der Task Scheduler verwendet. Doch auch mit Windows Azure lassen sich Programme aller Art in bestimmten Abständen wiederkehrend ausführen.

Unterstützte Programmtypen und Vorbereitung des Programmes

Azure Web Jobs unterstützt eine Vielzahl von verschiedenen Programmtypen wie z.B. unter anderem PowerShell Scripts (.ps1), Javascript (.js), Executables (.exe) und Java (.jar).
Für dieses Beispiel verenden wir eine einfache C# Konsolenapplikation. Deren Aufgabe es ist, nur eine kleine Nachricht auszugeben:

Code
Wenn, wie in diesem Beispiel, keine weiteren Bibliotheken verwendet wurden, kann die .exe Datei einfach so ohne weitere Änderungen als Web Job verwendet werden. Wenn jedoch zusätzliche Bibliotheken wie z.B Microsoft.SharePoint.Client.Runtime.dll (zur Kommunikation des Web Jobs mit SharePoint) verwendet wurden, muss der gesamte Inhalt des Release-Ordners in ein Zip archiviert werden, welches dann als Web Job verwendet werden kann.

ZipFile

Erstellen des Webjobs auf Azure

Der Erste Schritt beim Erstellen eines neuen Web Jobs ist das Bereitstellen einer Web App.

CreateWebApp

Sobald die Web App bereitgestellt ist, kann auch schon der Web Job eingerichtet werden.

CreateWebJob

Hier kann nun gewählt werden um was für einen Typ es sich beim Web Job handelt:

  • Fortlaufend ausgeführt: Wird nur einmal ausgeführt. Hier muss im Code selber eine Art von Loop implementiert werden um sicherzustellen, dass das Programm nicht von selbst endet.
  • Ausgelöst: Kann manuell gestartet oder in einem bestimmten Intervall (CRON-Ausdruck) ausgeführt werden. Zusätzlich muss man hier auch den Namen des Web Jobs wählen und das Programm hochladen.

CRON-Ausdruck

Der Ausdruck Cron kommt vom griechischen Wort chronos (Zeit). In Azure Web Jobs wird der CRON-Ausdruck dafür verwendet, um einen Intervall zu definieren in dem der Job ausgeführt wird. Der Aufbau ist folgendermassen: Sekunde, Minute, Stunde, Tag, Monat, Wochentage.
Einige Beispiele von CRON-Ausdrücken:
– 0 */15 * * * * (alle 15 Minuten)
– 0 0 * * * * (jede Stunde)
– 0 0 12 * * * (jeden Tag um 12:00)
– 0 0 0 * * sun (jeden Sonntag um 00:00)
– 0 0/15 * * * mon,tue,wed,thu,fri (alle 15 Minuten, ausser Samstag und Sonntag)

Nach dem Speichern ist der Web Job eingerichtet. Je nach Intervall macht es Sinn, den Job einmal manuell auszuführen um seine Funktionalität zu testen. Im Protokoll kann man praktisch überprüfen ob ein Job erfolgreich durchgelaufen ist oder ob es einen Fehler gegeben hat.

Da man einen ausgelösten Web Job nicht debuggen kann (ein fortlaufend ausgeführter Job kann remote debuggt werden), ist es wichtig den Code so zu implementieren, dass alle Fehler geloggt werden. Denn alles was in der Console ausgegeben wird, sollte auch im Protokoll festgehalten werden.

WebJobsLog

WebJobSingleLogFazit

Mit Azure Web Jobs können auf einfache Weise wiederkehrende Aufgaben erstellt und ausgeführt werden. Die vielen unterstützenden Dateiformate sowie die flexible Definition von Intervallen geben dem Entwickler grosse Freiheiten.

Christian Rothen
Software Engineer Solutions


Kommentar verfassen

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden /  Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden /  Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden /  Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden /  Ändern )

Verbinde mit %s