Триггер прогрева Функций Azure
В этой статье описывается, как работать с триггерами прогрева в службе Функции Azure. Триггер прогрева вызывается при добавлении экземпляра для масштабирования работающего приложения-функции. Триггер прогрева позволяет определить функцию, которая запускается при запуске нового экземпляра приложения-функции. Для предварительной загрузки пользовательских зависимостей можно использовать триггер прогревание, чтобы функции были готовы немедленно начать обработку запросов. Некоторые действия для триггера прогрева могут включать открытие подключений, загрузку зависимостей или выполнение любой другой пользовательской логики, прежде чем приложение начнет получать трафик.
При использовании триггера прогрева следует принимать во внимание следующие соображения.
- Триггер прогрева недоступен для приложений, работающих в плане потребления.
- Триггер прогрева не поддерживается в среде выполнения Функций версии 1.x.
- Поддержка триггера прогрева предоставляется по умолчанию во всех средах разработки. Не нужно вручную устанавливать пакет или регистрировать расширение.
- Для каждого приложения-функции может быть только одна функция триггера прогрева, и ее нельзя вызвать после того, как экземпляр уже запущен.
- Триггер нагревания вызывается только во время операций горизонтального масштабирования, а не во время перезапусков или других немасштабируемых запусков. Убедитесь, что логика может загружать все необходимые зависимости, не полагаясь на триггер прогрева. Отложенная загрузка является хорошим шаблоном для достижения этой цели.
- Зависимости, созданные триггером прогрева, должны совместно использоваться с другими функциями в приложении. Дополнительные сведения см. в разделе Статические клиенты.
- Если используется встроенная проверка подлинности (также известная как Easy Auth), для вызова вызываемого триггера прогревание необходимо включить только ПРОТОКОЛ HTTPS.
Пример
Функцию C# можно создать с помощью одного из следующих режимов C#:
- Изолированная рабочая модель: скомпилированная функция C#, которая выполняется в рабочем процессе, изолированном от среды выполнения. Изолированный рабочий процесс необходим для поддержки функций C#, работающих в LTS и не LTS-версиях .NET и платформа .NET Framework.
- Модель внутрипроцессного процесса: скомпилированная функция C#, которая выполняется в том же процессе, что и среда выполнения Функций.
- Скрипт C#: используется в основном при создании функций C# в портал Azure.
Внимание
Поддержка будет завершена для модели в процессе 10 ноября 2026 г. Настоятельно рекомендуется перенести приложения в изолированную рабочую модель для полной поддержки.
В следующем примере показана функция 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('warmupTrigger1', {
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
для определения функции. Этот атрибут не имеет параметров.
Заметки
Триггеры прогрения не требуют примечаний. Просто используйте имя warmup
(без учета регистра) для FunctionName
заметки.
Настройка
Для объекта, передаваемого app.warmup()
методуoptions
, нет свойств, которые необходимо задать.
Настройка
В следующей таблице описываются свойства конфигурации привязки, которые задаются в файле 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
.