Udostępnij przez


Tworzenie aplikacji usługi Azure Functions w języku Python

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 pojedynczy host.json plik 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 w requirements.txt do 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:

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ład pyproject.toml.

Następujące narzędzia można skonfigurować do używania kompilacji lokalnej:

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