Поделиться через


Создавайте приложения Azure Functions на Python

Функции 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 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.

Следующие средства можно настроить для использования локальной сборки:

Это важно

При разработке приложений 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