共用方式為


在 Azure App Service 中使用 WebJobs 執行背景工作

使用 Azure 入口網站 來部署 WebJobs,以便上傳可執行檔或指令碼。 您可以在 Azure App Service 中執行背景工作。

如果您使用 Visual Studio 來開發和部署 WebJobs,而不是使用 Azure App Service,請參閱使用 Visual Studio 部署 WebJobs

注意

適用於 Windows 容器Linux 程式碼Linux 容器的 WebJobs 處於預覽階段。 適用於 Windows 程式碼的 WebJobs 已正式推出,而非預覽版。

概觀

WebJobs 是一項 Azure App Service 功能,可讓您在與 Web 應用程式相同的執行個體中執行程式或指令碼。 所有 App Service 方案都支援 WebJobs。 使用 WebJobs 沒有額外的成本。

注意

從 2024 年 6 月 1 日起,所有新建立的 App Service 應用程式都可以選擇使用命名慣例 <app-name>-<random-hash>.<region>.azurewebsites.net 來產生唯一的預設主機名稱。 現有的應用程式名稱將保持不變。

範例: myapp-ds27dh7271aah175.westus-01.azurewebsites.net

如需詳細資料,請參閱 App Service 資源的唯一預設主機名稱 (英文)。

Azure WebJobs SDK 可以搭配 WebJobs 使用來簡化程式設計工作。 如需詳細資訊,請參閱 什麼是 Windows Azure AD 租用戶?

Azure Functions 提供另一種方式來執行程式和指令碼。 如需 WebJobs 和函式之間的比較,請參閱在 Flow、Logic Apps、Functions 和 WebJobs 之間做選擇

WebJob 類型

指令碼或程式支援的檔案類型

支援以下檔案:
.cmd.bat.exe (使用 Windows CMD)
.ps1 (使用 PowerShell)
.sh (使用 Bash)
.php (使用 PHP)
.py (使用 Python)
.js (使用 Node.js)
.jar (使用 Java)

執行這些檔案類型所需的執行階段已安裝在 Web 應用程式執行個體上。

連續與觸發的 WebJob

下表說明連續的觸發的 WebJob 之間的差異:

連續 觸發
建立 WebJob 時立即啟動。 為了避免結束作業,程式或指令碼通常會在無限迴圈中執行其工作。 如果作業結束,您可以重新啟動。 通常與 WebJobs SDK 搭配使用。 只在手動或排程觸發時才啟動。
在 Web 應用程式執行所在的所有執行個體上執行。 您可以選擇性地將 WebJob 限制為單一執行個體。 在 Azure 選取來進行負載平衡的單一執行個體上執行。
支援遠端偵錯。 不支援遠端偵錯。
會在 \site\wwwroot\app_data\Jobs\Continuous 下方部署程式碼。 會在 \site\wwwroot\app_data\Jobs\Triggered 下方部署程式碼。

注意

Web 應用程式會在閒置超過 20 分鐘後逾時,而且只有針對實際 Web 應用程式的要求,才可重設計時器。 在 Azure 入口網站中檢視應用程式的組態,或者對進階工具網站 (https://<app_name>.scm.azurewebsites.net) 提出要求,並不會重設計時器。 如果您設定裝載工作的 Web 應用程式為持續執行、依排程執行或使用事件驅動觸發程序,請在 Web 應用程式的 Azure [設定] 頁面上啟用 [一律開啟] 設定。 [一律開啟] 設定有助於確保這些類型的 WebJobs 得以可靠地執行。 這項功能僅適用於基本、標準和進階定價層

建立連續 WebJob

重要

當您為應用程式設定原始檔控制時,Webjobs 應該作為原始檔控制整合的一部分進行部署。 在為您的應用程式設定原始檔控制後,就無法從 Azure 入口網站新增 WebJob。

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。

  2. 從左窗格中,選取 [WebJobs],然後選取 [新增]

    顯示如何在入口網站中的 App Service 應用程式中新增 WebJob 的螢幕擷取畫面。

  3. 依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]

    顯示如何為 App Service 應用程式設定多執行個體連續 WebJob 的螢幕擷取畫面。

    設定 範例值 描述
    名稱 myContinuousWebJob App Service 應用程式中唯一的名稱。 開頭必須是字母或數字,而且不得含有 "-" 和 "_" 之外的特殊字元。
    檔案上傳 ConsoleApp.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。
    類型 連續 WebJob 類型在本文稍早已有提及。
    縮放比例 多重執行個體 僅適用於連續 WebJob。 決定程式或指令碼是在所有執行個體上執行,還是在一個執行個體上執行。 在多個執行個體上執行的選項不適用於免費或共用定價層
  4. 新的 WebJob 會出現在 [WebJob] 分頁。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]

  5. 若要停止或重新啟動連續的 WebJob,請在清單中使用滑鼠右鍵按一下該 WebJob,並選取 [停止] 或 [執行] 按鈕,然後確認您的選取項目。

    顯示如何在 Azure 入口網站中停止連續 WebJob 的螢幕擷取畫面。

建立手動觸發的 WebJob

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。

  2. 從左窗格中,選取 [WebJobs],然後選取 [新增]

    顯示如何在入口網站中的 App Service 應用程式中新增 WebJob 的螢幕擷取畫面 (手動觸發的 WebJob)。

  3. 依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]

    顯示如何為 App Service 應用程式設定手動觸發 WebJob 的螢幕擷取畫面。

    設定 範例值 描述
    名稱 myTriggeredWebJob App Service 應用程式中唯一的名稱。 開頭必須是字母或數字,而且不得含有 "-" 和 "_" 之外的特殊字元。
    檔案上傳 ConsoleApp1.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。
    類型 觸發 在本文稍早已有描述 WebJob 類型
    觸發程序 手動
  4. 新的 WebJob 會出現在 [WebJob] 分頁。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]

  5. 若要停止或重新啟動連續的 WebJob,請在清單中使用滑鼠右鍵按一下該 WebJob,並選取 [執行] 按鈕,然後確認您的選取項目。

    顯示如何在 Azure 入口網站中執行手動觸發 WebJob 的螢幕擷取畫面。

建立排程的 WebJob

也會觸發排程的 Webjob 程序。 您可以安排在您指定的排程上自動發生觸發程式。

  1. Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。

  2. 從左窗格中,選取 [WebJobs],然後選取 [新增]

    顯示如何在入口網站中的 App Service 應用程式中新增 WebJob 的螢幕擷取畫面 (排程的 WebJob)。

  3. 依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]

    顯示如何在 App Service 應用程式中設定排程 WebJob 的螢幕擷取畫面。

    設定 範例值 描述
    名稱 myScheduledWebJob App Service 應用程式中唯一的名稱。 開頭必須是字母或數字,而且不得含有 "-" 和 "_" 之外的特殊字元。
    檔案上傳 ConsoleApp.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。
    類型 觸發 WebJob 類型在本文稍早已有提及。
    觸發程序 已排程 若要讓排程可靠地運作,請啟用 [永遠開啟] 功能。 [永遠開啟] 僅適用於基本、標準和進階定價層。
    CRON 運算式 0 0/20 * * * * CRON 運算式將於下一節中說明。
  4. 新的 WebJob 會出現在 [WebJob] 分頁。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]

  5. 排程的 WebJob 是依 CRON 運算式所定義的排程執行。 若要隨時執行 WebJob,請在清單中使用滑鼠右鍵按一下該 WebJob,並選取 [執行] 按鈕,然後確認您的選取項目。

    顯示如何在 Azure 入口網站中執行手動排程 WebJob 的螢幕擷取畫面。

NCRONTAB 運算式

您可以在入口網站中輸入 NCRONTAB 運算式,或在 WebJob .zip 檔案的根目錄中加入 settings.job 檔案,如下列範例所示:

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

若要深入了解,請參閱排程觸發的 WebJob

注意

用來執行 CRON 運算式的預設時區是國際標準時間 (UTC)。 若要讓 CRON 運算式以另一個時區為基礎,請為名為 WEBSITE_TIME_ZONE 的函式應用程式建立應用程式設定。 若要深入了解,請參閱 NCRONTAB 時區

管理 WebJobs

您可以在 Azure 入口網站中管理網站執行的個別 WebJobs 執行狀態。 移至 [設定]>[WebJobs],選擇 WebJob,即可啟動和停止該 WebJob。 您也可以檢視和修改執行 Webhook 的密碼,該 Webhook 執行 WebJob。

您也可以新增名為 WEBJOBS_STOPPED 的應用程式設定,其值為 1,以停止您網站上執行的所有 WebJobs。 您可以使用此方法,來防止衝突的 WebJobs 同時在預備和生產位置中執行。 同樣地,您可以針對 WEBJOBS_DISABLE_SCHEDULE 設定使用 1 的值,以停用網站或預備位置中觸發的 WebJobs。 針對位置,請記得啟用 [部署位置設定] 選項,讓設定本身不會遭到交換。

檢視工作歷程記錄

  1. 針對您要查看的 WebJob, 請選取 [記錄]

    顯示如何存取 WebJob 記錄的螢幕擷取畫面。

  2. 在 [WebJob 詳細資料] 分頁上,選取時間以查看一個執行的詳細資料。

    顯示如何選擇 WebJob 執行以查看其詳細記錄的螢幕擷取畫面。

  3. 在 [WebJob 執行詳細資料] 頁面中,您可以選取 [下載] 以取得記錄的文字檔,或選取頁面頂端的 [WebJobs] 階層連結,以查看不同 WebJob 的記錄。

WebJob 狀態

以下列出常見的 WebJob 狀態:

  • Initializing 應用程式剛啟動,且 WebJob 正在進行其初始化程序。
  • Starting WebJob 正在啟動中。
  • Running WebJob 正在執行中。
  • PendingRestart 連續 WebJob 因任何原因啟動後不到兩分鐘就會結束,而且 App Service 會等候 60 秒,然後再重新啟動 WebJob。 如果連續 WebJob 在兩分鐘標記之後結束,App Service 不會等候 60 秒,並立即重新啟動 WebJob。
  • Stopped WebJob 已停止 (通常從 Azure 入口網站中),目前未執行,且在您再次手動將其啟動之前不會執行,即使是連續或排程的 WebJob 也一樣。
  • Aborted 此狀況可能由許多原因所導致,例如長時間執行的 WebJob 達到逾時標記。

下一步

Azure WebJobs SDK 可以搭配 WebJobs 使用,以簡化許多程式設計工作。 如需詳細資訊,請參閱 什麼是 Windows Azure AD 租用戶?