Azure App Service에서 WebJobs로 백그라운드 작업 실행

참고 항목

Windows 컨테이너, Linux 코드Linux 컨테이너에 대한 WebJobs는 미리 보기로 제공됩니다. Windows 코드용 WebJobs는 일반적으로 사용할 수 있으며 미리 보기에서는 사용할 수 없습니다.

Azure Portal을 사용해 WebJobs를 배포하여 실행 파일 또는 스크립트를 업로드합니다. Azure App Service에서 백그라운드 작업을 실행할 수 있습니다.

Azure App Service 대신 Visual Studio를 사용하여 WebJobs를 개발 및 배포하는 경우 Visual Studio를 사용하여 WebJobs 배포를 참조하세요.

개요

WebJobs는 웹앱과 동일한 인스턴스에서 프로그램 또는 스크립트를 실행할 수 있는 Azure App Service 기능입니다. WebJobs를 사용하는 데 추가 비용은 없습니다.

여러 프로그래밍 작업을 간소화하기 위해 Azure WebJobs SDK를 WebJobs로 사용할 수 있습니다. 자세한 내용은 WebJobs SDK 정의를 참조하십시오.

Azure Functions는 프로그램 및 스크립트를 실행하는 다른 방법을 제공합니다. WebJobs와 Functions 간에 비교는 Flow, Logic Apps, Functions 및 WebJobs 중에서 선택을 참조하세요.

WebJob 형식

스크립트 또는 프로그램에 지원되는 파일 형식

다음 파일 형식이 지원됩니다.
.cmd, .bat, .exe (Windows cmd 사용)
.ps1 (PowerShell 사용)
.sh (Bash 사용)
.php (PHP 사용)
.py (Python 사용)
.js (Node.js 사용)
.jar (Java 사용)

이러한 파일 형식을 실행하는 데 필요한 런타임은 웹앱 인스턴스에 이미 설치되어 있습니다.

연속 및 트리거된 WebJobs

다음 표에서는 연속 및 WebJobs에서 트리거된 차이점을 설명합니다.

연속 트리거됨
WebJob이 만들어질 때 즉시 시작합니다. 작업을 종료하지 않으려면 프로그램 또는 스크립트는 일반적으로 무한 루프 내에서 작업을 수행합니다. 작업을 종료하는 경우 다시 시작할 수 있습니다. 일반적으로 WebJobs SDK와 함께 사용됩니다. 수동으로 또는 일정에서 트리거된 경우에만 시작합니다.
웹앱이 실행되는 모든 인스턴스에서 실행됩니다. 필요에 따라 WebJob을 단일 인스턴스로 제한할 수 있습니다. Azure에서 부하 분산을 위해 선택한 단일 인스턴스에서 실행합니다.
원격 디버깅을 지원합니다. 원격 디버깅을 지원하지 않습니다.
코드는 \site\wwwroot\app_data\Jobs\Continuous 아래에 배포됩니다. 코드는 \site\wwwroot\app_data\Jobs\Triggered 아래에 배포됩니다.

참고 항목

웹앱은 20분 동안 활동이 없을 경우 시간이 초과되고 실제 웹앱에 대한 요청만 타이머를 다시 설정할 수 있습니다. Azure Portal에서 앱의 구성을 보거나 고급 도구 사이트(https://<app_name>.scm.azurewebsites.net)에 요청을 수행해도 타이머가 다시 설정되지 않습니다. 작업을 호스트하는 웹앱을 연속으로 실행하거나 예약에 따라 실행하거나 이벤트 기반 트리거를 사용하도록 설정한 경우 웹앱의 Azure 구성 페이지에서 Always On 설정을 활성화합니다. Always On 설정을 사용하면 이러한 종류의 WebJobs를 안정적으로 실행할 수 있습니다. 이 기능은 기본, 표준 및 프리미엄 가격 책정 계층에서만 사용할 수 있습니다.

연속 WebJob 만들기

Important

소스 제어가 애플리케이션용으로 구성된 경우, Webjobs는 소스 제어 통합의 일부로 배포되어야 합니다. 소스 제어가 애플리케이션용으로 구성되면 WebJob을 Azure Portal에서 추가할 수 없습니다.

  1. Azure Portal에서 App Service 웹앱, API 앱 또는 모바일 앱의 App Service 페이지로 이동합니다.

  2. 왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.

    포털의 App Service 앱에서 WebJob을 추가하는 방법을 보여 주는 스크린샷

  3. 표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다.

    App Service 앱에 대해 mult-instance 연속 WebJob을 구성하는 방법을 보여 주는 스크린샷

    설정 샘플 값 설명
    이름 myContinuousWebJob App Service 앱 내에서 고유한 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다.
    파일 업로드 ConsoleApp.zip 실행 파일 또는 스크립트 파일과 프로그램 또는 스크립트를 실행하는 데 필요한 지원 파일이 포함된 .zip 파일입니다. 지원되는 실행 파일 또는 스크립트 파일 형식은 지원되는 파일 형식 섹션에 나열됩니다.
    Type 연속 WebJob 형식은 이 문서의 앞부분에서 설명됩니다.
    스케일 다중 인스턴스 연속 WebJobs에 대해서만 사용할 수 있습니다. 프로그램 또는 스크립트가 모든 인스턴스 또는 하나의 인스턴스에서 실행되는지 여부를 결정합니다. 여러 인스턴스에서 실행하는 옵션은 무료 또는 공유 가격 책정 계층에 적용되지 않습니다.
  4. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.

  5. 연속 WebJob을 중지하거나 다시 시작하려면 목록에서 WebJob을 마우스 오른쪽 단추로 클릭하고 중지 또는 실행 단추를 선택한 다음, 선택 사항을 확인합니다.

    Azure Portal에서 연속 WebJob을 중지하는 방법을 보여 주는 스크린샷

수동으로 트리거된 WebJob 만들기

  1. Azure Portal에서 App Service 웹앱, API 앱 또는 모바일 앱의 App Service 페이지로 이동합니다.

  2. 왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.

    포털의 App Service 앱에서 WebJob을 추가하는 방법을 보여 주는 스크린샷(수동으로 트리거된 WebJob).

  3. 표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다.

    App Service 앱에 대해 수동으로 트리거된 WebJob을 구성하는 방법을 보여 주는 스크린샷

    설정 샘플 값 설명
    이름 myTriggeredWebJob App Service 앱 내에서 고유한 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다.
    파일 업로드 ConsoleApp1.zip 실행 파일 또는 스크립트 파일과 프로그램 또는 스크립트를 실행하는 데 필요한 지원 파일이 포함된 .zip 파일입니다. 지원되는 실행 파일 또는 스크립트 파일 형식은 지원되는 파일 형식 섹션에 나열됩니다.
    Type 트리거됨 WebJob 형식은 이 문서의 앞부분에 설명되어 있습니다.
    트리거 수동
  4. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.

  5. 수동으로 트리거된 WebJob을 실행하려면 목록에서 WebJob을 마우스 오른쪽 단추로 클릭하고 실행 단추를 선택한 다음, 선택 사항을 확인합니다.

    Azure Portal에서 수동으로 트리거된 WebJob을 실행하는 방법을 보여 주는 스크린샷

예약된 WebJob 만들기

예약된 Webjob도 트리거됩니다. 지정한 일정에 따라 트리거가 자동으로 발생하도록 예약할 수 있습니다.

  1. Azure Portal에서 App Service 웹앱, API 앱 또는 모바일 앱의 App Service 페이지로 이동합니다.

  2. 왼쪽 창에서 WebJobs를 선택한 다음, 추가를 선택합니다.

    포털(예약된 WebJob)의 App Service 앱에서 WebJob을 추가하는 방법을 보여 주는 스크린샷

  3. 표에 지정된 대로 WebJob 추가 설정을 입력한 다음, Webjob 만들기를 선택합니다.

    App Service 앱에서 예약된 WebJob을 구성하는 방법을 보여 주는 스크린샷

    설정 샘플 값 설명
    이름 myScheduledWebJob App Service 앱 내에서 고유한 이름입니다. 문자 또는 숫자로 시작해야 하며 "-" 및 "_" 이외의 특수 문자를 포함해서는 안 됩니다.
    파일 업로드 ConsoleApp.zip 실행 파일 또는 스크립트 파일과 프로그램 또는 스크립트를 실행하는 데 필요한 지원 파일이 포함된 .zip 파일입니다. 지원되는 실행 파일 또는 스크립트 파일 형식은 지원되는 파일 형식 섹션에 나열됩니다.
    Type 트리거됨 WebJob 형식은 이 문서의 앞부분에서 설명됩니다.
    트리거 예약됨 안정적으로 실행되도록 예약하기 위해 Always On 기능을 사용하도록 설정합니다. Always On은 기본, 표준 및 프리미엄 가격 책정 계층에서만 사용할 수 있습니다.
    CRON 식 0 0/20 * * * * CRON 식이 다음 섹션에 설명되어 있습니다.
  4. 새 WebJob이 WebJobs 페이지에 표시됩니다. WebJob이 추가되었지만 표시되지 않는다는 메시지가 표시되면 새로 고침을 선택합니다.

  5. 예약된 WebJob은 CRON 식에 정의된 일정에 따라 실행됩니다. 언제든지 수동으로 실행하려면 목록에서 WebJob을 마우스 오른쪽 단추로 클릭하고 실행 단추를 선택한 다음, 선택 사항을 확인합니다.

    Azure Portal에서 수동으로 예약된 WebJob을 실행하는 방법을 보여 주는 스크린샷

NCRONTAB 식

다음 예제와 같이 포털에 NCRONTAB 식을 입력하거나 WebJob .zip 파일의 루트에 settings.job 파일을 포함할 수 있습니다.

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

자세한 내용은 트리거된 WebJob 예약을 참조하세요.

참고 항목

CRON 식을 실행하는 데 사용되는 기본 표준 시간대는 UTC(협정 세계시)입니다. CRON 식이 다른 표준 시간대를 기반으로 실행되도록 하려면 WEBSITE_TIME_ZONE이라는 함수 앱에 대한 앱 설정을 만듭니다. 자세히 알아보려면 NCRONTAB 표준 시간대를 참조하세요.

WebJobs 관리

Azure Portal의 사이트에서 실행되는 개별 WebJobs 실행 상태를 관리할 수 있습니다. 설정>WebJobs로 이동하여 WebJob을 선택하고, WebJob을 시작 및 중지할 수 있습니다. 또한 WebJob을 실행하는 웹후크의 암호를 보고 수정할 수 있습니다.

값이 1WEBJOBS_STOPPED이라는 애플리케이션 설정을 추가하여 사이트에서 실행되는 모든 WebJobs를 중지할 수 있습니다. 이 메서드를 사용하면 WebJobs가 준비 슬롯과 프로덕션 슬롯 모두에서 실행되지 않도록 방지할 수 있습니다. 마찬가지로 WEBJOBS_DISABLE_SCHEDULE 설정에 1 값을 사용하여 사이트 또는 스테이징 슬롯에서 트리거된 WebJobs를 사용하지 않도록 설정할 수 있습니다. 슬롯의 경우 설정 자체가 교환되지 않도록 배포 슬롯 설정 옵션을 사용하도록 설정해야 합니다.

작업 기록 보기

  1. 보려는 WebJob의 경우 로그를 선택합니다.

    WebJob에 대한 로그에 액세스하는 방법을 보여 주는 스크린샷

  2. WebJob 세부 정보 페이지에서 하나를 실행하는 세부 내용을 확인하려면 시간을 선택합니다.

    WebJob 실행을 선택하여 자세한 로그를 확인하는 방법을 보여 주는 스크린샷

  3. WebJob 실행 세부 정보 페이지에서 다운로드를 선택하여 로그의 텍스트 파일을 가져오거나 페이지 맨 위에 있는 WebJobs 이동 경로 링크를 선택하여 다른 WebJob에 대한 로그를 볼 수 있습니다.

WebJob 상태

다음은 일반적인 WebJob 상태 목록입니다.

  • 앱이 시작되고 WebJob이 초기화 프로세스를 진행하는 초기화가 진행됩니다.
  • Starting WebJob이 시작되고 있습니다.
  • Running WebJob이 실행 중입니다.
  • PendingRestart 연속 WebJob은 어떤 이유로든 시작된 후 2분 이내에 종료되고 App Service WebJob을 다시 시작하기 전에 60초 동안 기다립니다. 연속 WebJob이 2분 표시 후에 종료되면 App Service는 60초를 기다리지 않고 WebJob을 즉시 다시 시작합니다.
  • Stopped WebJob이 중지되었으며(일반적으로 Azure Portal에서) 현재 실행되고 있지 않으며 연속 또는 예약된 WebJob에 대해서도 수동으로 다시 시작할 때까지 실행되지 않습니다.
  • 중단된 장기 실행 WebJob이 시간 제한 표식에 도달하는 경우와 같은 여러 가지 이유로 발생할 수 있습니다.

다음 단계

여러 프로그래밍 작업을 간소화하기 위해 Azure WebJobs SDK를 WebJobs로 사용할 수 있습니다. 자세한 내용은 WebJobs SDK 정의를 참조하십시오.