Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Functions obsługuje trzy opcje kompilacji do publikowania aplikacji języka Python na platformie Azure. Wybierz metodę kompilacji na podstawie środowiska lokalnego, zależności aplikacji i wymagań środowiska uruchomieniowego.
Szybkie porównanie działań kompilacji
| Typ wdrożenia | Gdzie są zainstalowane zależności | Typowy przypadek użycia |
|---|---|---|
| Kompilacja zdalna (zalecana) | Azure (App Service) | Ustawienie domyślne, zalecane dla większości użytkowników |
| Kompilacja lokalna | Twoja maszyna | Deweloperzy systemu Linux/macOS, ograniczone scenariusze systemu Windows |
| Zależności niestandardowe | Obsługiwane przez dodatkowy adres URL indeksu lub instalację lokalną | Zależności inne niż PyPI |
Zagadnienia dotyczące pakietu wdrożeniowego
Podczas wdrażania aplikacji funkcji napisanej w języku Python na platformie Azure, należy pamiętać o następujących wymaganiach dotyczących pakowania:
- Zawartość pakietu, a nie folder: wdróż zawartość folderu projektu, a nie sam folder.
-
Poziom
host.jsongłówny: upewnij się, że pojedynczyhost.jsonplik znajduje się w katalogu głównym pakietu wdrożeniowego, a nie jest zagnieżdżony w podfolderze. -
Wyklucz pliki programistyczne: możesz wykluczyć foldery, takie jak
tests/,.github/i.venv*/z wdrożonego pakietu, dołączając je do programu.funcignore. - Środowisko kompilacji musi być zgodne ze środowiskiem produkcyjnym: Zależności muszą być tworzone na maszynie z systemem Ubuntu przy użyciu tej samej wersji języka Python co aplikacja produkcyjna. Kompilacja zdalna automatycznie obsługuje ten scenariusz.
-
Zależności muszą być zainstalowane w
./.python_packages/lib/site-packages: Zdalne budowanie instaluje wszystkie zależności wymienione wrequirements.txtdo prawidłowego katalogu. -
Pamiętaj o rozmiarze pakietu wdrożeniowego: duże zestawy zależności zwiększają czas kompilacji, opóźnienie zimnego uruchamiania oraz czas importowania i inicjowania modułu. Aplikacje z dużymi bibliotekami naukowymi lub uczenia maszynowego (w tym
pytorch) są szczególnie dotknięte. - Kompilacja zdalna ma 60-sekundowy limit czasu: jeśli instalacja zależności przekroczy limit, kompilacja zakończy się niepowodzeniem. W takim przypadku rozważ użycie lokalnej kompilacji i wdrożenia ze wstępnie utworzonymi zależnościami.
-
Importowanie modułu ma 2-minutowy limit czasu: ładowanie modułu języka Python i indeksowanie funkcji podczas uruchamiania ma 2-minutowy limit dla języka Python w wersji 3.13 lub nowszej lub starszych wersji języka Python z włączoną obsługą
PYTHON_ENABLE_INIT_INDEXING. Jeśli twoja aplikacja przekroczy to, ogranicz importy na najwyższym poziomie lub użyj leniwych importów (zaimportuj moduły w funkcji zamiast w zakresie globalnym).
Kompilacja zdalna
Kompilacja zdalna to zalecane podejście do wdrożenia aplikacji w języku Python zawierającej tylko kod w usłudze Functions.
W przypadku kompilacji zdalnej platforma Functions obsługuje instalację pakietu i zapewnia zgodność ze środowiskiem zdalnego środowiska uruchomieniowego. Użycie kompilacji zdalnej powoduje również mniejszy pakiet wdrożeniowy.
Kompilację zdalną można używać podczas publikowania aplikacji w języku Python przy użyciu następujących narzędzi:
-
Azure Functions Core Tools:
func azure functionapp publishpolecenie domyślnie żąda kompilacji zdalnej podczas publikowania aplikacji języka Python. -
AZ CLI:
az functionapp deployment source config-zipdomyślnie używa zdalnej kompilacji podczas wdrażania aplikacji Python. - Visual Studio Code: polecenie Azure Functions: Deploy to Azure... zawsze używa kompilacji zdalnej.
-
Ciągłe dostarczanie przy użyciu GitHub Actions: akcja Azure/functions-action@v1 używa kompilacji zdalnej, gdy parametr
remote-buildjest ustawiony natruedla planu Flex Consumption lub gdyscm-do-build-during-deploymentienable-oryx-buildsą ustawione natruedla planów dedykowanych.
Aby włączyć kompilację zdalną dla innych scenariuszy, takich jak ciągłe dostarczanie za pomocą usługi Azure Pipelines, zobacz Włączanie kompilacji zdalnej.
Kompilacja zdalna obsługuje również niestandardowe indeksy pakietów podczas korzystania z ustawienia aplikacji PIP_EXTRA_INDEX_URL. Aby uzyskać więcej informacji, zobacz Zdalna kompilacja.
Ważne
Kompilacja zdalna instaluje wszystkie zależności wymienione w pliku requirements.txt. Aby upewnić się, że wszystkie wymagane pakiety są zainstalowane, pamiętaj, aby uwzględnić te zależności w requirements.txt pliku.
Kompilacja lokalna
Jeśli nie zażądasz kompilacji zdalnej, zależności zostaną zainstalowane na maszynie. Cały lokalny projekt i jego zależności są następnie pakowane lokalnie i wdrażane do aplikacji funkcji. Użycie kompilacji lokalnej powoduje przesyłanie większego pakietu.
Należy również zainstalować zależności w prawidłowym katalogu. Użyj polecenia pip install --target="./.python_packages/lib/site-packages" , aby zainstalować wymagane zależności w folderze lokalnym .python_packages/lib/site-packages .
Jeśli na przykład masz zależności wymienione w requirements.txt pliku, możesz uruchomić następujące polecenie:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Użyj kompilacji lokalnej, gdy:
- Programujesz lokalnie w systemie Linux lub macOS.
- Kompilacja zdalna jest niedostępna lub jest ograniczona.
- Chcesz zdefiniować zależności w pliku innym niż
requirements.txt, na przykładpyproject.toml.
Następujące narzędzia można skonfigurować do używania kompilacji lokalnej:
-
Podstawowe narzędzia usługi Azure Functions: użyj
func azure functionapp publishz flagą--no-build. -
AZ CLI:
az functionapp deployment source config-zipz flagą--build-remote=false. -
Ciągłe dostarczanie za pomocą GitHub Actions: ustaw parametr
remote-buildnafalsedla planu Flex Consumption lub ustawscm-do-build-during-deploymentienable-oryx-buildnafalsedla planów dedykowanych.
Ważne
Podczas tworzenia aplikacji języka Python na komputerze z systemem Windows nie używaj kompilacji lokalnej. Pakiety utworzone na komputerze z systemem Windows często mają problemy z wdrażaniem i uruchamianiem w systemie Linux w usłudze Azure Functions. Używaj kompilacji lokalnej tylko wtedy, gdy masz pewność, że pakiet działa w systemach opartych na systemie Linux.
Zależności niestandardowe
Usługa Azure Functions obsługuje niestandardowe i inne zależności niebędące PyPI, używając ustawienia aplikacji PIP_EXTRA_INDEX_URL lub tworząc lokalną kompilację na komputerze z systemem Linux lub macOS.
Zdalna kompilacja z dodatkowym adresem URL indeksu
Gdy pakiety prywatne są dostępne w trybie online, możesz zażądać kompilacji zdalnej po ustawieniu lokalizacji pakietu prywatnego przy użyciu PIP_EXTRA_INDEX_URL ustawienia aplikacji.
Po ustawieniu PIP_EXTRA_INDEX_URL zdalne kompilacje używają tego źródła pakietów podczas wdrażania.
PIP_INDEX_URL Zastępuje indeks pakietu, więc rozważ użycie PIP_EXTRA_INDEX_URL zamiast tego, aby zapobiec nieoczekiwanemu zachowaniu.
Lokalne pakiety lub koła
Lokalne pakiety i koła są obsługiwane podczas kompilowania aplikacji funkcji platformy Azure w języku Python.
Aby zainstalować te pakiety lub koła przy użyciu kompilacji zdalnej, możesz uwzględnić zależności w requirements.txt pliku i wdrożyć z włączoną kompilacją zdalną.
Na przykład plik requirements.txt może wyglądać podobnie do następującego fragmentu kodu:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Aby zainstalować te zależności przy użyciu kompilacji lokalnej, zainstaluj zależności w folderze lokalnym .python_packages/lib/site-packages i wdróż je z wyłączoną kompilacją zdalną.
Jeśli na przykład masz pakiety zdefiniowane w requirements.txt pliku, możesz zainstalować i opublikować za pomocą następujących poleceń i narzędzi Core Tools:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build