Sdílet prostřednictvím


Vytváření aplikací Azure Functions v Pythonu

Azure Functions podporuje tři možnosti sestavení pro publikování aplikací Pythonu do Azure. Zvolte metodu sestavení na základě vašeho místního prostředí, závislostí aplikace a požadavků za běhu.

Rychlé porovnání akcí sestavení

Typ nasazení Kde jsou nainstalovány závislosti Typický případ použití
Vzdálené sestavení (doporučeno) Azure (App Service) Výchozí, doporučeno pro většinu uživatelů
Místní sestavení Váš počítač Vývojáři pro Linux/macOS, omezené scénáře pro Windows
Vlastní závislosti Řešení prostřednictvím extra adresy URL indexu nebo místní instalace Jiné závislosti než PyPI

Důležité informace o balíčku pro nasazení

Při nasazování aplikace funkcí Pythonu do Azure mějte na paměti tyto požadavky na balení:

  • Obsah balíčku, ne složka: Nasaďte obsah složky projektu, ne samotnou složku.
  • Kořenová úroveň host.json: Zajistěte, aby byl jeden host.json soubor v kořenovém adresáři balíčku pro nasazení, který není vnořený do podsložky.
  • Vyloučit vývojové soubory: Můžete vyloučit složky, jako tests/je , .github/a .venv*/ z nasazeného balíčku jejich zahrnutím do .funcignore.
  • Prostředí sestavení se musí shodovat s produkčním prostředím: Závislosti musí být vytvořené na počítači s Ubuntu pomocí stejné verze Pythonu jako produkční aplikace. Vzdálený build zpracovává tento scénář automaticky.
  • Závislosti musí být nainstalovány do ./.python_packages/lib/site-packages: Vzdálené sestavení nainstaluje všechny závislosti uvedené ve requirements.txt správném adresáři.
  • Mějte na paměti velikost balíčku pro nasazení: Velké sady závislostí zvyšují dobu sestavení, latenci studeného spuštění a dobu importu a inicializace modulů. Ovlivněné jsou zejména aplikace s velkými vědeckými knihovnami nebo knihovnami ML (včetně pytorch).
  • Vzdálené sestavení má 60sekundový časový limit: Pokud instalace závislostí překročí limit, sestavení selže. V takovém případě zvažte použití místního sestavení a nasazení s předem připravenými závislostmi.
  • Import modulu má 2minutový časový limit: Načítání modulu Pythonu a indexování funkcí během spouštění má 2minutový limit pro Python 3.13 a vyšší nebo pro starší verze Pythonu s povolenou PYTHON_ENABLE_INIT_INDEXING verzí. Pokud aplikace tuto hodnotu překročí, snižte importy nejvyšší úrovně nebo použijte odložené importy (import modulů uvnitř těla funkce místo globálního oboru).

Vzdálené sestavení

Vzdálené sestavení je doporučeným přístupem pro nasazení aplikace v Pythonu do služby Functions jen pro kód.

Při vzdáleném sestavení platforma Functions zpracovává instalaci balíčků a zajišťuje kompatibilitu s prostředím vzdáleného modulu runtime. Použití vzdáleného sestavení také vede k menšímu balíčku pro nasazení.

Vzdálené sestavení můžete použít při publikování aplikace v Pythonu pomocí těchto nástrojů:

Pokud chcete povolit vzdálené sestavení pro jiné scénáře, jako je průběžné doručování pomocí Azure Pipelines, přečtěte si téma Povolení vzdáleného sestavení.

Vzdálené sestavení také podporuje používání vlastních indexů balíčků, když je použito nastavení aplikace PIP_EXTRA_INDEX_URL. Další informace naleznete v tématu Vzdálené sestavení.

Důležité

Vzdálené sestavení nainstaluje všechny závislosti uvedené v souboru requirements.txt. Abyste měli jistotu, že jsou všechny požadované balíčky nainstalované, nezapomeňte do souboru requirements.txt zahrnout tyto závislosti.

Místní sestavení

Pokud o vzdálené sestavení nepožádáte, závislosti se místo toho nainstalují na váš počítač. Celý místní projekt a závislosti se pak zabalí místně a nasadí do vaší aplikace funkcí. Při použití místního sestavení se nahraje větší balíček.

Závislosti musíte také nainstalovat do správného adresáře. Slouží pip install --target="./.python_packages/lib/site-packages" k instalaci požadovaných závislostí do místní .python_packages/lib/site-packages složky. Pokud máte například závislosti uvedené v requirements.txt souboru, můžete spustit tento příkaz:

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

Místní sestavení použijte, když:

  • Vyvíjíte místně v Linuxu nebo macOS.
  • Vzdálené sestavení není k dispozici nebo je omezeno.
  • Chcete definovat závislosti v jiném souboru, než requirements.txtje například pyproject.toml.

Pro použití místního sestavení je možné nakonfigurovat následující nástroje:

Důležité

Při vývoji aplikací v Pythonu na počítači s Windows nepoužívejte místní build. Balíčky založené na počítači s Windows často mají problémy s nasazením a spouštěním v Linuxu ve službě Azure Functions. Místní sestavení používejte jenom v případě, že máte jistotu, že balíček běží v systémech založených na Linuxu.

Vlastní závislosti

Azure Functions podporuje vlastní a další závislosti jiné než PyPI pomocí PIP_EXTRA_INDEX_URL nastavení aplikace nebo vytvořením místního sestavení na počítači s Linuxem nebo macOS.

Vzdálené sestavení s další adresou URL indexu

Pokud jsou vaše privátní balíčky dostupné online, můžete po nakonfigurování umístění balíčku pomocí nastavení aplikace PIP_EXTRA_INDEX_URL požádat o vzdálené sestavení. Když nastavíte PIP_EXTRA_INDEX_URL, vzdálená sestavení používají tento zdroj balíčků během nasazování. PIP_INDEX_URL nahrazuje index balíčku, proto zvažte použití PIP_EXTRA_INDEX_URL místo toho, abyste zabránili neočekávanému chování.

Místní balíčky nebo kola

Místní balíčky a kola se podporují při vytváření aplikací Azure Functions v Pythonu.

Pokud chcete tyto balíčky nebo kola nainstalovat pomocí vzdáleného sestavení, můžete do souboru zahrnout závislosti requirements.txt a nasadit je s povoleným vzdáleným sestavením.

Soubor requirements.txt může například vypadat jako následující úryvek.

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

Pokud chcete tyto závislosti nainstalovat pomocí místního sestavení, nainstalujte závislosti do místní .python_packages/lib/site-packages složky a nasaďte je se zakázaným vzdáleným sestavením. Pokud máte například balíčky definované v requirements.txt souboru, můžete nainstalovat a publikovat pomocí následujících příkazů a nástrojů Core Tools:

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