Ответ Джека в основном правильный, но я уточню здесь.
Документация по семантике исполнения находится здесь .Для ясности:
HTTP-функции вызываются не более одного раза.Это происходит из-за синхронной природы HTTP-вызовов, и это означает, что любая ошибка при обработке вызова функции будет возвращена без повторных попыток.Ожидается, что вызывающая функция HTTP обработает ошибки и при необходимости повторите попытку.
Нет гарантии, что функция HTTP будет выполнена точно один раз.Некоторые исполнения могут завершиться неудачей, прежде чем они достигнут функции.Это отличается от всех других (фоновых) типов функций, которые провайдер выполняет хотя бы один раз:
Фоновые функции вызываются как минимум один раз.Это происходит из-за асинхронного характера обработки событий, когда нет вызывающей стороны, которая ожидает ответа и может повторить попытку в случае ошибки.Выпущенное событие вызывает функцию с потенциальными повторными попытками в случае сбоя (если требуется при развертывании функции) и случайными дублирующимися вызовами по другим причинам (даже если повторные попытки в случае сбоя не были запрошены).
Итак, для фоновых функцийчтобы быть на 100% правильными, они должны быть идемпотентными.
Если вы хотите повторить неудачные HTTP-функции, клиент должен будет повторить попытку, и в этом случае вы можете захотеть, чтобы эта HTTP-функция была идемпотентной какЧто ж.В этом случае клиент должен будет предоставить уникальный ключ при повторной попытке.
Обратите внимание, что невозможно пометить функцию HTTP для внутренних повторных попыток.Это возможно только для фоновых функций.