在 Azure App Service 中使用 WebJob 執行背景工作Run Background tasks with WebJobs in Azure App Service

總覽Overview

WebJobs 是一項 Azure App Service 功能,可讓您在與 Web 應用程式、API 應用程式或行動應用程式相同的內容中執行程式或指令碼。WebJobs is a feature of Azure App Service that enables you to run a program or script in the same context as a web app, API app, or mobile app. 使用 WebJob 不會產生額外的費用。There is no additional cost to use WebJobs.

重要

Linux 上的 App Service 尚不支援 WebJob。WebJobs is not yet supported for App Service on Linux.

本文說明如何使用 Azure 入口網站來部署 WebJob,以便上傳可執行檔或指令碼。This article shows how to deploy WebJobs by using the Azure portal to upload an executable or script. 如需如何使用 Visual Studio 開發和部署 WebJobs 的詳細資訊,請參閱使用 Visual Studio 部署 WebJobsFor information about how to develop and deploy WebJobs by using Visual Studio, see Deploy WebJobs using Visual Studio.

Azure WebJobs SDK 可以搭配 WebJobs 使用,以簡化許多程式設計工作。The Azure WebJobs SDK can be used with WebJobs to simplify many programming tasks. 如需詳細資訊,請參閱 什麼是 WebJobs SDKFor more information, see What is the WebJobs SDK.

Azure Functions 提供另一種方式來執行程式和指令碼。Azure Functions provides another way to run programs and scripts. 如需 WebJobs 和函式之間的比較,請參閱在 Flow、Logic Apps、Functions 和 WebJobs 之間做選擇For a comparison between WebJobs and Functions, see Choose between Flow, Logic Apps, Functions, and WebJobs.

WebJob 類型WebJob types

下表描述連續和觸發 WebJobs 之間的差異。The following table describes the differences between continuous and triggered WebJobs.

連續Continuous 觸發式Triggered
建立 WebJob 時立即啟動。Starts immediately when the WebJob is created. 為了避免結束作業,程式或指令碼通常會在無限迴圈中執行其工作。To keep the job from ending, the program or script typically does its work inside an endless loop. 如果作業結束,您可以重新啟動。If the job does end, you can restart it. 只在手動或排程觸發時才啟動。Starts only when triggered manually or on a schedule.
在 Web 應用程式執行所在的所有執行個體上執行。Runs on all instances that the web app runs on. 您可以選擇性地將 WebJob 限制為單一執行個體。You can optionally restrict the WebJob to a single instance. 在 Azure 選取來進行負載平衡的單一執行個體上執行。Runs on a single instance that Azure selects for load balancing.
支援遠端偵錯。Supports remote debugging. 不支援遠端偵錯。Doesn't support remote debugging.

注意

Web 應用程式會在 20 分鐘沒有活動之後逾時。A web app can time out after 20 minutes of inactivity. 只有對實際 Web 應用程式所提出的要求會重設計時器。Only requests to the actual web app reset the timer. 在 Azure 入口網站中查看應用程式的設定, 或對 advanced tools 網站 (https://<app_name>.scm.azurewebsites.net) 提出要求, 並不會重設計時器。Viewing the app's configuration in the Azure portal or making requests to the advanced tools site (https://<app_name>.scm.azurewebsites.net) don't reset the timer. 如果您的應用程式執行連續或排程 (計時器觸發程式) Webjob, 請啟用Always On以確保 webjob 能夠可靠地執行。If your app runs continuous or scheduled (Timer trigger) WebJobs, enable Always On to ensure that the WebJobs run reliably. 這項功能僅適用於基本、標準和進階定價層This feature is available only in the Basic, Standard, and Premium pricing tiers.

指令碼或程式支援的檔案類型Supported file types for scripts or programs

以下是支援的檔案類型:The following file types are supported:

  • .cmd、.bat、.exe (使用 Windows 命令提示字元).cmd, .bat, .exe (using Windows cmd)
  • .ps1 (使用 PowerShell).ps1 (using PowerShell)
  • .sh (使用 Bash).sh (using Bash)
  • .php (使用 PHP).php (using PHP)
  • .py (使用 Python).py (using Python)
  • .js (使用 Node.js).js (using Node.js)
  • .jar (使用 Java).jar (using Java)

建立連續 WebJobCreate a continuous WebJob

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. 選取 [WebJob]。Select WebJobs.

    選取 WebJob

  3. 在 [WebJob] 分頁上,選取 [新增]。In the WebJobs page, select Add.

    WebJob 分頁

  4. 使用表格中所指定的 [新增 WebJob]  設定。Use the Add WebJob settings as specified in the table.

    新增 WebJob 分頁

    設定Setting 範例值Sample value 描述Description  
    名稱 Name  myContinuousWebJobmyContinuousWebJob App Service 應用程式中唯一的名稱。A name that is unique within an App Service app. 開頭必須是字母或數字,而且不能含有 "-" 和 "" 之外的特殊字元。Must start with a letter or a number and cannot contain special characters other than "-" and "".
    檔案上傳 File Upload  ConsoleApp.zipConsoleApp.zip .zip 檔案包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。The supported executable or script file types are listed in the Supported file types section.
    類型 Type  連續Continuous WebJob 類型在本文稍早已有提及。The WebJob types are described earlier in this article.
    調整Scale 多重執行個體Multi instance 僅適用於連續 WebJob。Available only for Continuous WebJobs. 決定程式或指令碼是在所有執行個體上執行,或是只在一個執行個體上執行。Determines whether the program or script runs on all instances or just one instance. 在多個執行個體上執行的選項不適用於免費或共用定價層The option to run on multiple instances doesn't apply to the Free or Shared pricing tiers.
  5. 按一下 [確定]。Click OK.

    新的 WebJob 會出現在 [WebJob] 分頁。The new WebJob appears on the WebJobs page.

    WebJob 的清單

  6. 若要停止或重新啟動連續執行的 WebJob,可在清單中使用滑鼠右鍵按一下該 WebJob,然後按一下 [停止] 或 [開始]。To stop or restart a continuous WebJob, right-click the WebJob in the list and click Stop or Start.

    停止連續 WebJob

建立手動觸發的 WebJobCreate a manually triggered WebJob

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. 選取 [WebJob]。Select WebJobs.

    選取 WebJob

  3. 在 [WebJob] 分頁上,選取 [新增]。In the WebJobs page, select Add.

    WebJob 分頁

  4. 使用表格中所指定的 [新增 WebJob]  設定。Use the Add WebJob settings as specified in the table.

    新增 WebJob 分頁

    設定Setting 範例值Sample value 描述Description  
    名稱 Name  myTriggeredWebJobmyTriggeredWebJob App Service 應用程式中唯一的名稱。A name that is unique within an App Service app. 開頭必須是字母或數字,而且不能含有 "-" 和 "" 之外的特殊字元。Must start with a letter or a number and cannot contain special characters other than "-" and "".
    檔案上傳 File Upload  ConsoleApp.zipConsoleApp.zip .zip 檔案包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。The supported executable or script file types are listed in the Supported file types section.
    類型 Type  觸發式Triggered WebJob 類型在本文稍早已有提及。The WebJob types are described earlier in this article.
    觸發程序 Triggers  手動Manual
  5. 按一下 [確定]。Click OK.

    新的 WebJob 會出現在 [WebJob] 分頁。The new WebJob appears on the WebJobs page.

    WebJob 的清單

  6. 若要執行 WebJob,可在清單中使用滑鼠右鍵按一下它的名稱,然後按一下 [ 執行]。To run the WebJob, right-click its name in the list and click Run.

    執行 Web 工作

建立排程 WebJobCreate a scheduled WebJob

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。In the Azure portal, go to the App Service page of your App Service web app, API app, or mobile app.

  2. 選取 [WebJob]。Select WebJobs.

    選取 WebJob

  3. 在 [WebJob] 分頁上,選取 [新增]。In the WebJobs page, select Add.

    WebJob 分頁

  4. 使用表格中所指定的 [新增 WebJob]  設定。Use the Add WebJob settings as specified in the table.

    新增 WebJob 分頁

    設定Setting 範例值Sample value 描述Description  
    名稱 Name  myScheduledWebJobmyScheduledWebJob App Service 應用程式中唯一的名稱。A name that is unique within an App Service app. 開頭必須是字母或數字,而且不能含有 "-" 和 "" 之外的特殊字元。Must start with a letter or a number and cannot contain special characters other than "-" and "".
    檔案上傳 File Upload  ConsoleApp.zipConsoleApp.zip .zip 檔案包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。A .zip file that contains your executable or script file as well as any supporting files needed to run the program or script. 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。The supported executable or script file types are listed in the Supported file types section.
    類型 Type  觸發式Triggered WebJob 類型在本文稍早已有提及。The WebJob types are described earlier in this article.
    觸發程序 Triggers  已排程Scheduled 若要讓排程可靠地運作,請啟用 [永遠開啟] 功能。For the scheduling to work reliably, enable the Always On feature. [永遠開啟] 僅適用於基本、標準和進階定價層。Always On is available only in the Basic, Standard, and Premium pricing tiers.
    CRON 運算式 CRON Expression  0 0/20 * * * *0 0/20 * * * * CRON 運算式將於下一節中說明。CRON expressions are described in the following section.
  5. 按一下 [確定]。Click OK.

    新的 WebJob 會出現在 [WebJob] 分頁。The new WebJob appears on the WebJobs page.

    WebJob 的清單

NCRONTAB 運算式NCRONTAB expressions

您可以在入口網站中輸入NCRONRAB 運算式, 或在settings.job WebJob .zip檔案的根目錄中包含檔案, 如下列範例所示:You can enter a NCRONRAB expression in the portal or include a settings.job file at the root of your WebJob .zip file, as in the following example:

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

若要深入瞭解, 請參閱排程已觸發的 WebJobTo learn more, see Scheduling a triggered WebJob.

檢視作業記錄View the job history

  1. 選取您想要查看記錄的 WebJob,然後選取 [記錄] 按鈕。Select the WebJob you want to see history for, and then select the Logs button.

    記錄按鈕

  2. 在 [WebJob 詳細資料] 分頁上,選取時間以查看一個執行的詳細資料。In the WebJob Details page, select a time to see details for one run.

    WebJob 詳細資料

  3. 在 [WebJob 執行詳細資料] 分頁上,選取 [切換輸出] 以查看記錄內容的文字。In the WebJob Run Details page, select Toggle Output to see the text of the log contents.

    網站工作執行詳細資料

    若要在個別的瀏覽器視窗中查看輸出文字,請選取 [下載]。To see the output text in a separate browser window, select download. 若要下載文字本身,請以滑鼠右鍵按一下 [下載],然後使用瀏覽器選項來儲存檔案內容。To download the text itself, right-click download and use your browser options to save the file contents.

  4. 選取分頁頂端的 [WebJob] 階層連結,以移至 WebJob 的清單。Select the WebJobs breadcrumb link at the top of the page to go to a list of WebJobs.

    WebJob 階層連結

    歷程記錄儀表板中的 WebJobs 清單

後續步驟Next steps

Azure WebJobs SDK 可以搭配 WebJobs 使用,以簡化許多程式設計工作。The Azure WebJobs SDK can be used with WebJobs to simplify many programming tasks. 如需詳細資訊,請參閱 什麼是 WebJobs SDKFor more information, see What is the WebJobs SDK.