Udostępnij przez


Uruchamianie zadań w tle za pomocą zadań WebJob

W tym artykule wyjaśniono, jak wdrożyć WebJobs przy użyciu portalu Azure w celu przekazania pliku wykonywalnego lub skryptu. WebJobs to funkcja usługi Azure App Service, która umożliwia uruchamianie programu lub skryptu na tej samej instancji co aplikacja internetowa. Wszystkie plany usługi App Service obsługują WebJobs. Korzystanie z WebJobs nie wiąże się z dodatkowymi kosztami.

Przegląd

WebJobs jest funkcją Usługi aplikacji platformy Azure, która umożliwia uruchamianie programu lub skryptu w tym samym wystąpieniu co aplikacja internetowa. Wszystkie plany usługi App Service obsługują WebJobs. Korzystanie z WebJobs nie wiąże się z dodatkowymi kosztami.

Jeśli używasz programu Visual Studio zamiast usługi Azure App Service do tworzenia i wdrażania zadań WebJob, zobacz Tworzenie i wdrażanie zadań WebJob przy użyciu programu Visual Studio.

Usługa Azure Functions umożliwia uruchamianie programów i skryptów. Aby zapoznać się z porównaniem WebJobs i Functions, zobacz Wybieranie odpowiednich usług integracji i automatyzacji na platformie Azure.

Typy zadań WebJob

Obsługiwane typy plików dla skryptów lub programów

Ważne

Zadania WebJob nie są obsługiwane w niestandardowych kontenerach systemu Linux opartych na systemie Alpine Linux, w tym aplikacjach systemu Linux korzystających z stosów środowiska uruchomieniowego Java 8 i Java 11. Począwszy od aplikacji java 17 dla systemu Linux, usługa Azure App Service używa obrazów innych niż alpine, które są zgodne z zadaniami WebJob.

Następujące typy plików są obsługiwane:

  • Przy użyciu narzędzia cmd systemu Windows: .cmd, .bat, .exe
  • Korzystanie z programu PowerShell: .ps1
  • Korzystanie z powłoki Bash: .sh
  • Korzystanie z Node.js: .js
  • Korzystanie z języka Java: .jar

Środowiska uruchomieniowe niezbędne do uruchamiania tych typów plików są już zainstalowane w instancji aplikacji webowej.

Zadania WebJobs: ciągłe vs. wyzwalane

W poniższej tabeli opisano różnice między ciągłymi a wyzwalanymi zadaniami WebJobs:

Ciągły Aktywowane
Rozpoczyna się natychmiast po utworzeniu zadania WebJob. Aby zadanie nie zakończyło się, program lub skrypt zazwyczaj wykonuje swoją pracę wewnątrz nieskończonej pętli. Jeśli zadanie zostanie zakończone, możesz go uruchomić ponownie. Zazwyczaj jest używany z zestawem SDK usługi WebJobs. Uruchamia się tylko po ręcznym aktywowaniu lub zgodnie z harmonogramem.
Uruchamia się we wszystkich wystąpieniach, na których działa aplikacja sieciowa. Opcjonalnie można ograniczyć WebJob do pojedynczego wystąpienia. Uruchamia się na jednej instancji, którą platforma Azure wybiera do równoważenia obciążenia.
Obsługuje debugowanie zdalne. Nie obsługuje zdalnego debugowania.
Kod jest wdrażany pod \site\wwwroot\app_data\Jobs\Continuous. Kod jest wdrażany pod \site\wwwroot\app_data\Jobs\Triggered.

Uwaga

Aplikacja internetowa może wyczerpać limit czasu po 20 minutach braku aktywności i tylko żądania do aplikacji internetowej mogą zresetować czasomierz. Wyświetlanie konfiguracji aplikacji w witrynie Azure Portal lub wykonywanie żądań do witryny zaawansowanych narzędzi nie powoduje zresetowania czasomierza. Jeśli ustawisz aplikację internetową hostującą zadanie, aby działała ciągle, działała zgodnie z harmonogramem lub wykorzystywała wyzwalacze sterowane zdarzeniami, włącz opcję Zawsze Włączone w panelu Konfiguracja platformy Azure swojej aplikacji internetowej. Ustawienie Zawsze włączone pomaga upewnić się, że tego rodzaju zadania WebJob działają niezawodnie. Ta funkcja jest dostępna tylko w warstwach cenowych Podstawowa, Standardowa i Premium.

Utwórz ciągłe zadanie WebJob

Ważne

Kiedy masz skonfigurowaną kontrolę źródła dla swojej aplikacji, WebJobs powinny być wdrażane jako część integracji kontroli źródła. Po skonfigurowaniu kontroli źródła dla aplikacji nie można dodać zadania WebJob w portalu Azure.

  1. W witrynie Azure Portal przejdź do strony usługi App Service aplikacji internetowej usługi App Service, aplikacji interfejsu API lub aplikacji mobilnej.

  2. W obszarze Ustawienia w okienku po lewej stronie wybierz pozycję Zadania WebJob, a następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający sposób dodawania zadania WebJob w aplikacji usługi App Service w portalu.

  3. Wypełnij ustawienia Dodaj WebJob zgodnie z informacjami zawartymi w tabeli, a następnie wybierz Utwórz WebJob.

    Zrzut ekranu pokazujący, jak skonfigurować ciągłe zadanie WebJob z wieloma wystąpieniami dla aplikacji usługi App Service.

    Ustawienie Przykładowa wartość Opis
    Nazwa myContinuousWebJob WebJob o unikalnej nazwie. Musi zaczynać się literą lub cyfrą i nie może zawierać znaków specjalnych innych niż "-" i "_".
    Przekazywanie pliku ConsoleApp.zip Plik .zip zawierający plik wykonywalny lub plik skryptu oraz wszystkie pliki pomocnicze potrzebne do uruchomienia programu lub skryptu. Obsługiwane typy plików wykonywalnych lub skryptów są wymienione w sekcji Obsługiwane typy plików .
    Typ Ciągły Typy zadań WebJob zostały opisane wcześniej w tym artykule.
    Skala Wiele instancji Dostępne tylko dla ciągłych zadań WebJobs. Określa, czy program lub skrypt jest uruchamiany we wszystkich wystąpieniach, czy w jednym wystąpieniu. Opcja uruchamiania na wielu instancjach nie ma zastosowania do warstw cenowych Bezpłatna i Współdzielona.
  4. Nowy WebJob pojawi się na stronie Zadania WebJobs. Jeśli zostanie wyświetlony komunikat informujący o dodaniu zadania WebJob, ale go nie widzisz, wybierz pozycję Odśwież.

  5. Aby zatrzymać lub ponownie uruchomić ciągłe zadanie WebJob, kliknij prawym przyciskiem myszy zadanie WebJob na liście i wybierz przycisk Zatrzymaj lub Uruchom , a następnie potwierdź wybór.

    Zrzut ekranu przedstawiający sposób zatrzymywania ciągłego zadania WebJob w witrynie Azure Portal.

Utwórz ręcznie wyzwalane zadanie WebJob

  1. W witrynie Azure Portal przejdź do strony usługi App Service aplikacji internetowej usługi App Service, aplikacji interfejsu API lub aplikacji mobilnej.

  2. W obszarze Ustawienia w okienku po lewej stronie wybierz pozycję Zadania WebJob, a następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający sposób dodawania zadania WebJob w aplikacji usługi App Service w portalu (ręcznie wyzwalane zadanie WebJob).

  3. Wypełnij ustawienia Dodaj WebJob zgodnie z informacjami zawartymi w tabeli, a następnie wybierz Utwórz WebJob.

    Zrzut ekranu przedstawiający sposób konfigurowania ręcznie wyzwalanego zadania WebJob dla aplikacji usługi App Service.

    Ustawienie Przykładowa wartość Opis
    Nazwa myTriggeredWebJob WebJob o unikalnej nazwie. Musi zaczynać się literą lub cyfrą i nie może zawierać znaków specjalnych innych niż "-" i "_".
    Przekazywanie pliku ConsoleApp1.zip Plik .zip zawierający plik wykonywalny lub plik skryptu oraz wszystkie pliki pomocnicze potrzebne do uruchomienia programu lub skryptu. Obsługiwane typy plików wykonywalnych lub skryptów są wymienione w sekcji Obsługiwane typy plików .
    Typ Aktywowane Typy zadań WebJob zostały opisane wcześniej w tym artykule.
    Wyzwalacze Instrukcja
  4. Nowy WebJob pojawi się na stronie Zadania WebJobs. Jeśli zostanie wyświetlony komunikat informujący o dodaniu zadania WebJob, ale go nie widzisz, wybierz pozycję Odśwież.

  5. Aby uruchomić ręcznie wyzwolone zadanie WebJob, kliknij prawym przyciskiem myszy zadanie WebJob na liście i wybierz przycisk Uruchom , a następnie potwierdź wybór.

    Zrzut ekranu przedstawiający sposób ręcznego uruchamiania wyzwalanego zadania WebJob w witrynie Azure Portal.

Utwórz zaplanowane zadanie WebJob

Wyzwalane jest również zaplanowane zadanie Webjob. Możesz zaplanować, aby wyzwalacz uruchamiał się automatycznie zgodnie z określonym harmonogramem.

  1. W witrynie Azure Portal przejdź do strony usługi App Service aplikacji internetowej usługi App Service, aplikacji interfejsu API lub aplikacji mobilnej.

  2. W obszarze Ustawienia w okienku po lewej stronie wybierz pozycję Zadania WebJob, a następnie wybierz pozycję Dodaj.

    Zrzut ekranu przedstawiający sposób dodawania zadania WebJob w aplikacji usługi App Service w portalu (zaplanowane zadanie WebJob).

  3. Wypełnij ustawienia Dodaj WebJob zgodnie z informacjami zawartymi w tabeli, a następnie wybierz Utwórz WebJob.

    Zrzut ekranu przedstawiający sposób konfigurowania zaplanowanego zadania WebJob w aplikacji usługi App Service.

    Ustawienie Przykładowa wartość Opis
    Nazwa myScheduledWebJob WebJob o unikalnej nazwie. Musi zaczynać się literą lub cyfrą i nie może zawierać znaków specjalnych innych niż "-" i "_".
    Przekazywanie pliku ConsoleApp.zip Plik .zip zawierający plik wykonywalny lub plik skryptu oraz wszystkie pliki pomocnicze potrzebne do uruchomienia programu lub skryptu. Obsługiwane typy plików wykonywalnych lub skryptów są wymienione w sekcji Obsługiwane typy plików .
    Typ Aktywowane Typy zadań WebJob zostały opisane wcześniej w tym artykule.
    Wyzwalacze Zaplanowane Aby planowanie działało niezawodnie, włącz funkcję Zawsze włączone. Zawsze włączone jest dostępne tylko w warstwach cenowych Podstawowa, Standardowa i Premium.
    Wyrażenie CRON 0 0/20 * * * * Wyrażenia CRON zostały opisane w poniższej sekcji.
  4. Nowy WebJob pojawi się na stronie Zadania WebJobs. Jeśli zostanie wyświetlony komunikat informujący o dodaniu zadania WebJob, ale go nie widzisz, wybierz pozycję Odśwież.

  5. Zaplanowane zadanie WebJob jest uruchamiane zgodnie z harmonogramem zdefiniowanym przez wyrażenie CRON. Aby uruchomić je ręcznie w dowolnym momencie, kliknij prawym przyciskiem myszy zadanie WebJob na liście i wybierz przycisk Uruchom , a następnie potwierdź wybór.

    Zrzut ekranu przedstawiający sposób ręcznego uruchamiania zaplanowanego zadania WebJob w witrynie Azure Portal.

Wyrażenia NCRONTAB

Wyrażenie NCRONTAB jest podobne do wyrażenia CRON, ale zawiera dodatkowe szóste pole na początku dla dokładności czasu w sekundach. Możesz wprowadzić wyrażenie NCRONTAB w portalu lub dołączyć plik settings.job w katalogu głównym pliku zadania WebJob .zip, jak w poniższym przykładzie.

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

Aby dowiedzieć się więcej, przeczytaj Planowanie wyzwalanego webowego zadania.

Uwaga

Domyślna strefa czasowa używana do uruchamiania wyrażeń CRON to uniwersalny czas koordynowany (UTC). Aby uruchomić wyrażenie CRON w oparciu o inną strefę czasową, utwórz ustawienie aplikacji dla swojej aplikacji funkcji o nazwie WEBSITE_TIME_ZONE. Aby dowiedzieć się więcej, zobacz NCRONTAB strefy czasowe.

Zarządzanie zadaniami WebJob

Możesz zarządzać stanem uruchomienia poszczególnych zadań WebJob działających w swojej witrynie za pomocą portalu Azure. Przejdź do Ustawienia>WebJobs, wybierz WebJob i możesz uruchomić lub zatrzymać WebJob. Możesz również wyświetlić i zmodyfikować hasło webhooka, który uruchamia WebJob.

Możesz również skonfigurować ustawienie aplikacji o nazwie WEBJOBS_STOPPED z wartością 1, aby zatrzymać wszystkie WebJobs działające na stronie. Za pomocą tej metody można zapobiec jednoczesnemu uruchamianiu konfliktujących zadań WebJob w slotach przejściowych i produkcyjnych. Możesz również użyć wartości 1 dla ustawienia WEBJOBS_DISABLE_SCHEDULE, aby wyłączyć uruchamiane na żądanie aplikacje WebJobs w witrynie lub slocie tymczasowym. W przypadku slotów pamiętaj, aby włączyć opcję Ustawienia slotów wdrożenia, aby samo ustawienie nie zostało zamienione.

Wyświetlanie historii zadań

  1. W przypadku zadania WebJob, które chcesz zobaczyć, wybierz pozycję Dzienniki.

    Zrzut ekranu przedstawiający sposób uzyskiwania dostępu do dzienników zadania typu WebJob.

  2. Na stronie Szczegóły zadania WebJob wybierz godzinę, aby wyświetlić szczegóły dla jednej realizacji zadania.

    Zrzut ekranu przedstawiający sposób wyboru przebiegu zadania WebJob w celu wyświetlenia szczegółowych logów.

  3. Na stronie Szczegóły uruchamiania zadania WebJob możesz wybrać pobierz, aby pobrać plik tekstowy dzienników, lub wybrać link okruszkowy WebJobs na górze strony, aby wyświetlić dzienniki dla innego zadania WebJob.

Stan zadania WebJob

Poniżej znajduje się lista typowych stanów WebJob:

  • Inicjowanie: aplikacja została uruchomiona, a WebJob przechodzi przez proces inicjalizacji.
  • Uruchamianie: trwa uruchamianie zadania WebJob.
  • Działa: Zadanie WebJob jest uruchomione.
  • PendingRestart: Ciągły WebJob kończy działanie w czasie krótszym niż dwie minuty od rozpoczęcia z dowolnego powodu, a usługa App Service czeka 60 sekund przed ponownym uruchomieniem WebJob. Jeśli ciągły WebJob kończy się po upływie dwóch minut, usługa App Service nie czeka 60 sekund i natychmiast uruchamia WebJob ponownie.
  • Zatrzymano: WebJob został zatrzymany (zwykle za pomocą portalu Azure) i obecnie nie jest uruchomiony oraz nie zostanie uruchomiony, dopóki nie uruchomisz go ponownie ręcznie, nawet w przypadku ciągłego lub zaplanowanego WebJob.
  • Przerwane: Może się to zdarzyć z wielu powodów, takich jak gdy długotrwałe wykonanie zadania WebJob osiągnie znacznik limitu czasu.

Następny krok

Samouczek: uruchamianie zadań w tle za pomocą zadań WebJob