Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Функции Azure поддерживают три варианта сборки для публикации приложений Python в Azure. Выберите метод сборки на основе локальной среды, зависимостей приложений и требований среды выполнения.
Быстрое сравнение действий сборки
| Тип развертывания | Где установлены зависимости | Типичный вариант использования |
|---|---|---|
| Удаленная сборка (рекомендуется) | Azure (служба приложений) | По умолчанию рекомендуется для большинства пользователей |
| Локальная сборка | Ваша машина | Разработчики Linux/macOS, ограниченные сценарии для Windows |
| Пользовательские зависимости | Обрабатывается с помощью дополнительного URL-адреса индекса или локальной установки | Зависимости, отличные от PyPI |
Рекомендации по пакету развертывания
При развертывании приложения-функции Python в Azure учитывайте следующие требования к упаковке:
- Содержимое пакета, а не папка: разверните содержимое папки проекта, а не саму папку.
-
Корневой уровень
host.json: убедитесь, что одинhost.jsonфайл находится в корне пакета развертывания, а не вложен в вложенную папку. -
Исключить файлы разработки: можно исключить такие папки, как
tests/,.github/и.venv*/из развернутого пакета, включив их в.funcignore. - Среда сборки должна соответствовать рабочей среде: зависимости должны быть созданы на компьютере ubuntu с использованием той же версии Python, что и производственное приложение. Удаленная сборка автоматически обрабатывает этот сценарий.
-
Зависимости должны быть установлены в
./.python_packages/lib/site-packages: удаленная сборка устанавливает все зависимости, перечисленные вrequirements.txt, в нужный каталог. -
Учитывайте размер пакета развертывания: большие наборы зависимостей увеличивают время сборки, задержку холодного запуска и время импорта и инициализации модуля. Приложения с большими научными библиотеками или библиотеками машинного обучения (включая
pytorch) особенно подвержены влиянию. - Удаленная сборка имеет 60-секундное время ожидания: если установка зависимостей превышает ограничение, сборка завершается ошибкой. В этом случае рекомендуется использовать локальную сборку и развертывание с предварительно созданными зависимостями.
-
Импорт модуля имеет 2-минутное ограничение времени: загрузка и индексирование модулей Python во время запуска имеет 2-минутное ограничение для Python 3.13 и выше или для более старых версий Python с
PYTHON_ENABLE_INIT_INDEXINGвключенными. Если приложение превышает это, уменьшите импорт верхнего уровня или используйте отложенные импорты (импорт модулей внутри тела функции вместо глобальной области).
Удаленная сборка
Удалённая сборка рекомендуется для развертывания вашего Python-приложения в Azure Functions с использованием только кода.
При удаленной сборке платформа Функций обрабатывает установку пакетов и обеспечивает совместимость с удаленной средой выполнения. Использование удаленной сборки также приводит к меньшему пакету развертывания.
При публикации приложения Python можно использовать удаленную сборку с помощью следующих средств:
-
Основные инструменты Функций Azure:
func azure functionapp publishкоманда запрашивает удаленную сборку по умолчанию при публикации приложений Python. -
AZ CLI:
az functionapp deployment source config-zipиспользует удаленную сборку по умолчанию при развертывании приложений Python. - Visual Studio Code: функции Azure: развертывание в Azure... всегда использует удаленную сборку.
-
Непрерывная доставка с помощью GitHub Actions: действие Azure/functions-action@v1 использует удаленную сборку, когда параметр
remote-buildзадан наtrueдля плана Flex Consumption или когдаscm-do-build-during-deploymentиenable-oryx-buildустановлены наtrueдля выделенных планов.
Сведения о включении удаленной сборки для других сценариев, таких как непрерывная доставка с помощью Azure Pipelines, см. в статье "Включение удаленной сборки".
Удаленная сборка также поддерживает пользовательские индексы пакетов при использовании PIP_EXTRA_INDEX_URL параметра приложения. Дополнительные сведения см. в разделе "Удаленная сборка".
Это важно
Удаленная сборка устанавливает все зависимости, перечисленные в requirements.txt. Чтобы убедиться, что все необходимые пакеты установлены, обязательно включите эти зависимости в requirements.txt файл.
Локальная сборка
Если вы не запрашиваете удаленную сборку, вместо этого на компьютере устанавливаются зависимости. Затем весь локальный проект и зависимости упаковываются локально и развертываются в приложении-функции. Использование локальной сборки приводит к отправке большего пакета.
Кроме того, необходимо установить зависимости в правильный каталог. Используйте pip install --target="./.python_packages/lib/site-packages", чтобы установить необходимые зависимости в локальную папку .python_packages/lib/site-packages.
Например, если у вас есть зависимости, перечисленные в requirements.txt файле, можно выполнить следующую команду:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Используйте локальную сборку, когда:
- Вы разрабатываете локально в Linux или macOS.
- Удаленная сборка недоступна или ограничена.
- Вы хотите определить зависимости в файле, отличном от того файла
requirements.txt, например вpyproject.toml.
Следующие средства можно настроить для использования локальной сборки:
- Основные инструменты Функций Azure: используйте
func azure functionapp publishс флагом--no-build. -
AZ CLI:
az functionapp deployment source config-zipс флагом--build-remote=false. -
Непрерывная доставка с помощью GitHub Actions: задайте параметр
remote-buildнаfalseдля плана потребления Flex или задайтеscm-do-build-during-deployment,enable-oryx-buildиfalseдля выделенных планов.
Это важно
При разработке приложений Python на компьютере с Windows не используйте локальную сборку. Пакеты, созданные на компьютере с Windows, часто сталкиваются с проблемами при их развертывании и запуске на Linux в Функциях Azure. Используйте локальную сборку, если вы уверены, что пакет выполняется в системах под управлением Linux.
Настраиваемые зависимости.
Функции Azure поддерживают пользовательские и другие зависимости, отличные от PyPI, с помощью PIP_EXTRA_INDEX_URL параметра приложения или создания локальной сборки на компьютере Linux или macOS.
Удаленная сборка с дополнительным URL-адресом индекса
Если частные пакеты доступны в Интернете, вы можете запросить удаленную сборку после задания расположения частного пакета с помощью PIP_EXTRA_INDEX_URL параметра приложения.
При конфигурировании PIP_EXTRA_INDEX_URL удаленные сборки используют этот канал пакетов во время развертывания.
PIP_INDEX_URL заменяет индекс пакета, поэтому рекомендуется использовать PIP_EXTRA_INDEX_URL вместо этого, чтобы предотвратить непредвиденное поведение.
Локальные пакеты или колеса
Локальные пакеты и колеса поддерживаются при создании приложений функций Azure python.
Чтобы установить эти пакеты или колеса с помощью удаленной сборки, можно включить зависимости в requirements.txt файл и развернуть с поддержкой удаленной сборки.
Например, файл requirements.txt может выглядеть следующим фрагментом кода:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Чтобы установить эти зависимости с помощью локальной сборки, установите зависимости в локальную .python_packages/lib/site-packages папку и разверните с отключенной удаленной сборкой.
Например, если у вас есть пакеты, определенные в requirements.txt файле, можно установить и опубликовать с помощью следующих команд и основных средств:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build