Freigeben über


Erstellen Ihrer Python Azure Functions-Apps

Azure Functions unterstützt drei Buildoptionen zum Veröffentlichen Ihrer Python-Apps in Azure. Wählen Sie Ihre Buildmethode basierend auf Ihrer lokalen Umgebung, App-Abhängigkeiten und Laufzeitanforderungen aus.

Schneller Vergleich für Build-Aktionen

Bereitstellungstyp Wo Abhängigkeiten installiert werden Typischer Anwendungsfall
Remotebuild (empfohlen) Azure (App Service) Standard, empfohlen für die meisten Benutzer
Lokaler Build Ihr Computer Linux/macOS-Entwickler, eingeschränkte Windows-Szenarien
Benutzerdefinierte Abhängigkeiten Verarbeitet über zusätzliche Index-URL oder lokale Installation Nicht-PyPI-Abhängigkeiten

Überlegungen zum Bereitstellungspaket

Beachten Sie bei der Bereitstellung Ihrer Python-Funktions-App in Azure die folgenden Verpackungsanforderungen:

  • Paketinhalte, nicht der Ordner: Stellen Sie den Inhalt Ihres Projektordners bereit, nicht den Ordner selbst.
  • Stammebene host.json: Stellen Sie sicher, dass sich eine einzelne host.json Datei im Stammverzeichnis des Bereitstellungspakets befindet und nicht in einem Unterordner geschachtelt ist.
  • Entwicklungsdateien ausschließen: Sie können Ordner wie tests/, .github/und .venv*/ aus dem bereitgestellten Paket ausschließen, indem Sie sie in .funcignore einschließen.
  • Die Buildumgebung muss mit der Produktionsumgebung übereinstimmen: Ihre Abhängigkeiten müssen auf einem Ubuntu-Computer mit derselben Python-Version wie die Produktions-App erstellt werden. Remotebuild behandelt dieses Szenario automatisch.
  • Abhängigkeiten müssen in ./.python_packages/lib/site-packages installiert werden: Remote Build installiert alle Abhängigkeiten, die in requirements.txt in das richtige Verzeichnis eingetragen sind.
  • Berücksichtigen Sie die Größe des Bereitstellungspakets: Große Abhängigkeitssätze erhöhen die Buildzeit, die Latenz beim Kaltstart und die Import- und Initialisierungszeit des Moduls. Anwendungen mit großen wissenschaftlichen oder ML-Bibliotheken (einschließlich pytorch) sind besonders betroffen.
  • Remotebuild verfügt über ein Timeout von 60 Sekunden: Wenn die Abhängigkeitsinstallation den Grenzwert überschreitet, schlägt der Build fehl. In diesem Fall sollten Sie einen lokalen Build verwenden und mit vordefinierten Abhängigkeiten bereitstellen.
  • Der Modulimport hat eine 2-minütige Zeitbeschränkung: Das Laden und Indizieren des Python-Moduls während des Starts hat ein 2-Minütiges Limit für Python 3.13 und höher oder für ältere Python-Versionen mit PYTHON_ENABLE_INIT_INDEXING aktivierter Funktion. Wenn Ihre App diesen Wert überschreitet, reduzieren Sie die Importe auf oberster Ebene oder verwenden Sie Lazy Imports (Importieren von Modulen innerhalb des Funktionskörpers anstatt im globalen Gültigkeitsbereich).

Remotebuild

Für die Bereitstellung Ihrer Python-Anwendung in Functions ausschließlich über Code ist Remote Build die empfohlene Vorgehensweise.

Mit Remotebuild behandelt die Functions-Plattform die Paketinstallation und stellt die Kompatibilität mit der Remotelaufzeitumgebung sicher. Die Verwendung des Remotebuilds führt auch zu einem kleineren Bereitstellungspaket.

Sie können Remotebuild verwenden, wenn Sie Ihre Python-App mit den folgenden Tools veröffentlichen:

Informationen zum Aktivieren des Remotebuilds für andere Szenarien, z. B. die kontinuierliche Übermittlung mit Azure-Pipelines, finden Sie unter Aktivieren des Remotebuilds.

Remote Build unterstützt auch benutzerdefinierte Paketindizes, wenn die App-Einstellung PIP_EXTRA_INDEX_URL verwendet wird. Weitere Informationen finden Sie unter Remotebuild.

Von Bedeutung

Der Remote-Build installiert alle Abhängigkeiten, die in requirements.txt aufgeführt sind. Um sicherzustellen, dass alle erforderlichen Pakete installiert sind, stellen Sie sicher, dass Sie diese Abhängigkeiten in die requirements.txt-Datei einschließen.

Lokaler Build

Wenn Sie keinen Remotebuild anfordern, werden abhängigkeiten stattdessen auf Ihrem Computer installiert. Das gesamte lokale Projekt und die abhängigkeiten werden dann lokal verpackt und in Ihrer Funktions-App bereitgestellt. Die Verwendung des lokalen Builds führt zu einem größeren Paketupload.

Außerdem müssen Sie Abhängigkeiten in das richtige Verzeichnis installieren. Verwenden Sie pip install --target="./.python_packages/lib/site-packages", um erforderliche Abhängigkeiten in Ihrem lokalen .python_packages/lib/site-packages-Ordner zu installieren. Wenn Beispielsweise Ihre Abhängigkeiten in einer requirements.txt Datei aufgelistet sind, können Sie diesen Befehl ausführen:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt

Verwenden Sie den lokalen Build in folgenden Fällen:

  • Sie entwickeln lokal unter Linux oder macOS.
  • Remotebuild ist nicht verfügbar oder ist eingeschränkt.
  • Sie möchten Abhängigkeiten in einer anderen Datei als requirements.txt definieren, z. B. pyproject.toml.

Die folgenden Tools können für die Verwendung des lokalen Builds konfiguriert werden:

Von Bedeutung

Wenn Sie Ihre Python-Apps auf einem Windows-Computer entwickeln, verwenden Sie keinen lokalen Build. Pakete, die auf einem Windows-Computer basieren, haben häufig Probleme bei der Bereitstellung und Ausführung unter Linux in Azure Functions. Verwenden Sie nur den lokalen Build, wenn Sie sicher sind, dass das Paket auf Linux-basierten Systemen ausgeführt wird.

Benutzerdefinierte Abhängigkeiten

Azure Functions unterstützt benutzerdefinierte und andere Nicht-PyPI-Abhängigkeiten mithilfe der PIP_EXTRA_INDEX_URL App-Einstellung oder durch Erstellen eines lokalen Builds auf einem Linux- oder macOS-Computer.

Remote-Build mit einer zusätzlichen Index-URL

Wenn Ihre privaten Pakete online verfügbar sind, können Sie einen Remotebuild anfordern, nachdem Sie den privaten Paketspeicherort mithilfe der PIP_EXTRA_INDEX_URL App-Einstellung festgelegt haben. Wenn Sie PIP_EXTRA_INDEX_URL festlegen, verwenden Remote-Builds diesen Paketfeed während der Bereitstellung. PIP_INDEX_URL ersetzt den Paketindex. Erwägen Sie daher stattdessen die Verwendung PIP_EXTRA_INDEX_URL , um unerwartetes Verhalten zu verhindern.

Lokale Pakete oder Räder

Lokale Pakete und Räder werden beim Erstellen von Python Azure Function-Apps unterstützt.

Um diese Pakete oder Wheels mit remote build zu installieren, können Sie die Abhängigkeiten in Ihre requirements.txt Datei einschließen und mit aktiviertem remote build bereitstellen.

Ihre requirements.txt-Datei könnte beispielsweise wie folgt aussehen:

 # Installing a custom wheel
 <my_package_wheel>.whl
 
 # Installing a local package
 path/to/my/package

Um diese Abhängigkeiten mit lokalem Build zu installieren, installieren Sie die Abhängigkeiten in Ihrem lokalen .python_packages/lib/site-packages Ordner, und stellen Sie es mit deaktivierter Remotebuild bereit. Wenn Sie beispielsweise die in Ihrer requirements.txt Datei definierten Pakete haben, können Sie sie mithilfe der folgenden Befehle und Core Tools installieren und veröffentlichen:

pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build