Azure Functions 熱身觸發程式
本文說明如何使用 Azure Functions 中的熱身觸發程式。 加入 實例以調整執行中的函式應用程式時,會叫用熱身觸發程式。 熱身觸發程式可讓您定義函式,以在啟動函式應用程式的新實例時執行。 您可以使用熱身觸發程式預先載入自定義相依性,讓您的函式準備好立即開始處理要求。 熱身觸發程式的一些動作可能包括開啟連線、載入相依性,或在應用程式開始接收流量之前執行任何其他自定義邏輯。
使用熱身觸發程式時,適用下列考慮:
- 熱身觸發程式不適用於在 取用方案上執行的應用程式。
- Functions 運行時間 1.x 版不支援熱身觸發程式。
- 所有開發環境中預設都會提供熱身觸發程序的支援。 您不需要手動安裝套件或註冊擴充功能。
- 每個函式應用程式只能有一個熱身觸發程式函式,而且在實例已執行之後就無法叫用。
- 熱身觸發程式只會在向外延展作業期間呼叫,而不是在重新啟動或其他非調整啟動期間呼叫。 請確定邏輯可以載入所有必要的相依性,而不需要依賴熱身觸發程式。 延遲載入是達成此目標的良好模式。
- 熱身觸發程式所建立的相依性應該與應用程式中的其他函式共用。 若要深入瞭解,請參閱 靜態用戶端。
- 如果使用內建驗證(也稱為 Easy Auth),則應該啟用 HTTPS,讓熱身觸發程式被叫用。
範例
您可以使用下列其中一種 C# 模式來建立 C# 函式:
- 隔離的背景工作模型:在與運行時間隔離的背景工作進程中執行的已編譯 C# 函式。 需要隔離的背景工作進程,才能支援在 LTS 和非 LTS 版本 .NET 和 .NET Framework 上執行的 C# 函式。
- 同進程模型:在與 Functions 運行時間相同的進程中執行的已編譯 C# 函式。
- C# 文稿:主要用於在 Azure 入口網站 中建立 C# 函式時。
重要
內含式模型支援將於 2026 年 11 月 10 日結束。 強烈建議您將應用程式移轉至隔離式背景工作角色模型,以取得完整支援。
下列範例示範 在新增至應用程式時,在每個新實例上執行的 C# 函 式。
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;
namespace SampleApp
{
public static class Warmup
{
[Function(nameof(Warmup))]
public static void Run([WarmupTrigger] object warmupContext, FunctionContext context)
{
var logger = context.GetLogger(nameof(Warmup));
logger.LogInformation("Function App instance is now warm!");
}
}
}
下列範例顯示當每個新實例新增至您的應用程式時,所執行的熱身觸發程式。
@FunctionName("Warmup")
public void warmup( @WarmupTrigger Object warmupContext, ExecutionContext context) {
context.getLogger().info("Function App instance is warm.");
}
下列範例示範 JavaScript 函 式,其具有熱身觸發程式,會在新增至應用程式時在每個新實例上執行:
const { app } = require('@azure/functions');
app.warmup('warmupTrigger', {
handler: (warmupContext, context) => {
context.log('Function App instance is warm.');
},
});
下列範例示範一個 TypeScript 函 式,其具有熱身觸發程式,會在新增至您的應用程式時在每個新實例上執行:
import { app, InvocationContext, WarmupContext } from '@azure/functions';
export async function warmupFunction(warmupContext: WarmupContext, context: InvocationContext): Promise<void> {
context.log('Function App instance is warm.');
}
app.warmup('warmup', {
handler: warmupFunction,
});
以下是 function.json 檔案:
{
"bindings": [
{
"type": "warmupTrigger",
"direction": "in",
"name": "warmupContext"
}
]
}
擱置的PowerShell範例程式代碼。
下列範例顯示function.json檔案中的熱身觸發程式和 Python 函式,會在應用程式新增至應用程式時在每個新實例上執行。
您的函式必須命名 warmup
為(不區分大小寫),而且每個應用程式只能有一個熱身函式。
以下是 function.json 檔案:
{
"bindings": [
{
"type": "warmupTrigger",
"direction": "in",
"name": "warmupContext"
}
]
}
如需詳細資訊,請參閱組態。
以下是 Python 程式碼:
import logging
import azure.functions as func
def main(warmupContext: func.Context) -> None:
logging.info('Function App instance is warm.')
屬性
進程內和隔離的背景工作進程 C# 連結庫都會使用 WarmupTrigger
屬性來定義函式。 C# 文稿會改用 function.json組態檔。
WarmupTrigger
使用屬性來定義函式。 此屬性沒有參數。
註釋
熱身觸發程式不需要註釋。 只要針對FunctionName
註釋使用不區分大小寫的名稱warmup
即可。
組態
下表說明您在 function.json 檔案中設定的繫結設定屬性。
function.json 屬性 | 描述 |
---|---|
type | 必要項目 - 必須設定為 warmupTrigger 。 |
direction | 必要項目 - 必須設定為 in 。 |
name | 必要 - 函式程式代碼中使用的變數名稱。 name warmupContext 針對係結參數,建議使用 的 。 |
如需完整範例,請參閱範例一節。
使用方式
下列考慮適用於在 C# 中使用熱身函式:
- 您的函式必須使用 屬性來命名
warmup
(不區分大小寫Function
)。 - 不需要傳回值屬性。
- 使用
Microsoft.Azure.Functions.Worker.Extensions.Warmup
套件 - 您可以將物件實例傳遞至 函式。
您的函式必須使用註釋來命名 warmup
(不區分大小寫 FunctionName
)。
function.json中的函式類型必須設定為 warmupTrigger
。