本文說明如何使用 Azure 入口網站 來部署 WebJobs,以上傳可執行檔或腳本。 WebJobs 是 Azure App Service 的功能,可讓您在與 Web 應用程式相同的實例中執行程式或腳本。 所有 App Service 方案都支援 WebJobs。 使用 WebJobs 沒有額外的成本。
概觀
WebJobs 是一項 Azure App Service 功能,可讓您在與 Web 應用程式相同的執行個體中執行程式或指令碼。 所有 App Service 方案都支援 WebJobs。 使用 WebJobs 沒有額外的成本。
如果您使用 Visual Studio 而非 Azure App Service 來開發和部署 WebJobs,請參閱使用 Visual Studio 開發及部署 WebJobs。
Azure Functions 提供另一種方式來執行程式和指令碼。 如需 WebJobs 和 Functions 之間的比較,請參閱 在 Azure 中選擇正確的整合和自動化服務。
WebJob 類型
指令碼或程式支援的檔案類型
支援以下檔案:
- 使用 Windows Cmd: .cmd、 .bat、 .exe
- 使用 PowerShell: .ps1
- 使用 Bash 腳本:.sh
- 使用 Node.js: .js
- 使用 Java: .jar
執行這些檔案類型所需的執行階段已安裝在 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 入口網站中檢視應用程式的設定,或向進階工具網站提出要求並不會重設定時器。 如果您將裝載工作的 Web 應用程式設定為持續執行、依排程執行或使用事件驅動觸發程式,請在 Web 應用程式的 [Azure 組態] 窗格上啟用 [永遠開啟] 設定。 [永遠開啟] 設定有助於確保這類 WebJobs 能夠可靠地執行。 這項功能僅適用於基本、標準和進階定價層。
建立連續 WebJob
重要
當您為應用程式設定原始檔控制時,Webjobs 應該作為原始檔控制整合的一部分進行部署。 在為您的應用程式設定原始檔控制後,就無法從 Azure 入口網站新增 WebJob。
在 Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。
在左窗格中的 [ 設定] 底下,選取 [WebJobs],然後選取 [ 新增]。
依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]。
設定 範例值 描述 名稱 myContinuousWebJob 唯一的 WebJob 名稱。 必須以字母或數字開頭,且不得包含特殊字元,除了 "-"
和"_"
之外。檔案上傳 ConsoleApp.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。 類型 連續 WebJob 類型在本文稍早已有提及。 調整 多重執行個體 僅適用於連續 WebJob。 決定程式或指令碼是在所有執行個體上執行,還是在一個執行個體上執行。 在多個執行個體上執行的選項不適用於免費或共用定價層。 新的 WebJob 會出現在 [WebJob] 頁面。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]。
若要停止或重新啟動連續的 WebJob,請在清單中使用滑鼠右鍵按一下該 WebJob,並選取 [停止] 或 [執行] 按鈕,然後確認您的選取項目。
建立手動觸發的 WebJob
在 Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。
在左窗格中的 [ 設定] 底下,選取 [WebJobs],然後選取 [ 新增]。
依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]。
設定 範例值 描述 名稱 myTriggeredWebJob 唯一的 WebJob 名稱。 必須以字母或數字開頭,且不得包含特殊字元,除了 "-"
和"_"
之外。檔案上傳 ConsoleApp1.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。 類型 觸發 在本文之前已經描述 WebJob 類型。 觸發程序 手動 新的 WebJob 會出現在 [WebJob] 頁面。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]。
若要執行手動觸發的 WebJob,請在清單中滑鼠右鍵按一下該 WebJob,並選取 [執行] 按鈕,然後確認您的選取項目。
建立排程的 WebJob
也會觸發排程的 Webjob 程序。 您可以安排觸發事件在您指定的時間表上自動發生。
在 Azure 入口網站中,移至 App Service Web 應用程式、API 應用程式或行動裝置應用程式的 [App Service] 分頁。
在左窗格中的 [ 設定] 底下,選取 [WebJobs],然後選取 [ 新增]。
依照資料表中的指定,填寫 [新增 WebJob] 設定,然後選取 [建立 Webjob]。
設定 範例值 描述 名稱 myScheduledWebJob 唯一的 WebJob 名稱。 必須以字母或數字開頭,且不得包含特殊字元,除了 "-"
和"_"
之外。檔案上傳 ConsoleApp.zip 一種 .zip 檔案,其中包含您的可執行檔或指令碼檔案,以及執行程式或指令碼所需的任何支援檔案。 支援的可執行檔或指令碼檔案類型會列在支援的檔案類型一節。 類型 觸發 WebJob 類型在本文稍早已有提及。 觸發程序 已排程 若要讓排程可靠地運作,請啟用 [永遠開啟] 功能。 [永遠開啟] 僅適用於基本、標準和進階定價層。 CRON 運算式 0 0/20 * * * * CRON 運算式將於下一節中說明。 新的 WebJob 會出現在 [WebJob] 頁面。 如果您看到指出已新增 WebJob 的訊息,但卻看不到 WebJob,請選取 [重新整理]。
排程的 WebJob 會根據 CRON 表示式定義的時間表來執行。 若要隨時執行 WebJob,請在清單中使用滑鼠右鍵按一下該 WebJob,並選取 [執行] 按鈕,然後確認您的選取項目。
NCRONTAB 表達式
NCRONTAB 運算式與 CRON 運算式類似,但在開頭增加了一個第六個字段,以秒為單位的時間精確度。 您可以在入口網站中輸入 NCRONTAB 運算式,或在 WebJob settings.job
檔案的根目錄包含檔案,如下列範例所示:
{
"schedule": "0 */15 * * * *"
}
若要深入了解,請參閱排程觸發式 WebJob。
附註
用來執行 CRON 運算式的預設時區是國際標準時間 (UTC)。 若要讓 CRON 運算式以另一個時區為基礎,請為名為 WEBSITE_TIME_ZONE 的函式應用程式建立應用程式設定。 若要深入了解,請參閱 NCRONTAB 時區。
管理 WebJobs
您可以使用 Azure 入口網站來管理在網站中執行的個別 WebJobs 執行狀態。 移至 [設定]>[WebJobs],選擇 WebJob,即可啟動和停止該 WebJob。 您也可以檢視和修改執行 WebJob 的 Webhook 的密碼。
您也可以設定名為 的 WEBJOBS_STOPPED
,其值為 1
,以停止您網站上執行的所有 WebJobs。 您可以使用此方法,來防止衝突的 WebJobs 同時在預備和生產位置中執行。 同樣地,您可以針對 1
設定使用 WEBJOBS_DISABLE_SCHEDULE
的值,以停用網站或預備位置中觸發的 WebJobs。 針對位置,請記得啟用 [部署位置設定] 選項,讓設定本身不會遭到交換。
檢視工作歷程記錄
針對您要查看的 WebJob, 選取 [記錄]。
在 [WebJob 詳細資料] 頁面上,選擇一個時間以查看某次執行的詳細資訊。
在 [WebJob 執行詳細資料] 頁面中,您可以選取 [下載] 以取得記錄的文字檔,或選取頁面頂端的 [WebJobs] 階層連結,以查看不同 WebJob 的記錄。
WebJob 狀態
以下是常見的 WebJob 狀態清單:
- 初始化:應用程式已啟動,而 WebJob 正經歷其初始化程式。
- 啟動:WebJob 正在啟動。
- 執行中:WebJob 正在執行。
- PendingRestart:持續執行的 WebJob 從開始運行後不到兩分鐘就因任何原因結束,然後 App Service 會在重新啟動 WebJob 之前等候 60 秒。 如果持續執行的 WebJob 在超過兩分鐘後結束,App Service 會立即重新啟動 WebJob,而不會等候 60 秒。
- 已停止:WebJob 已停止(通常從 Azure 入口網站),目前未執行,您必須手動重新啟動它才能再次運行,即使是連續或排程類型的 WebJob 也不例外。
- 中止:這可能會因許多原因而發生,例如長時間執行的網頁任務到達逾時標記時。