Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Azure Functions ondersteunt drie buildopties voor het publiceren van uw Python-apps naar Azure. Kies uw bouwmethode op basis van uw lokale omgeving, applicatie-afhankelijkheden en runtime-vereisten.
Snelle vergelijking voor bouwacties
| Implementatietype | Waar afhankelijkheden worden geïnstalleerd | Typisch gebruiksscenario |
|---|---|---|
| Externe build (aanbevolen) | Azure (App Service) | Standaard, aanbevolen voor de meeste gebruikers |
| Lokale build | Uw machine | Linux- en macOS-ontwikkelaars, beperkte Windows-scenario's |
| Aangepaste afhankelijkheden | Verwerkt via een extra index-URL of een lokale installatie | Niet-PyPI-afhankelijkheden |
Overwegingen voor implementatiepakketten
Houd bij het implementeren van uw Python-functie-app in Azure rekening met deze verpakkingsvereisten:
- Pakketinhoud, niet de map: Implementeer de inhoud van de projectmap, niet de map zelf.
-
Hoofdniveau
host.json: zorg ervoor dat éénhost.jsonbestand zich in de hoofdmap van het implementatiepakket bevindt, niet genest in een submap. -
Ontwikkelbestanden uitsluiten: U kunt mappen zoals
tests/,.github/en.venv*/van het geïmplementeerde pakket uitsluiten door ze op te slaan in.funcignore. - De build-omgeving moet overeenkomen met de productieomgeving: uw afhankelijkheden moeten worden gebouwd op een ubuntu-machine met dezelfde Python-versie als de productie-app. Remote build behandelt dit scenario automatisch.
-
Afhankelijkheden moeten worden geïnstalleerd in
./.python_packages/lib/site-packages: Externe build installeert alle afhankelijkheden die worden vermeld inrequirements.txtin de juiste map. -
Houd rekening met de grootte van het implementatiepakket: grote afhankelijkheidssets verhogen de buildtijd, latentie bij koude start en de import- en initialisatietijd van de module. Toepassingen met grote wetenschappelijke of ML-bibliotheken (inclusief
pytorch) worden vooral beïnvloed. - Externe build heeft een time-out van 60 seconden: als de afhankelijkheidsinstallatie de limiet overschrijdt, mislukt de build. In dat geval kunt u overwegen om een lokale build te gebruiken en te implementeren met vooraf gedefinieerde afhankelijkheden.
-
Module importeren heeft een tijdslimiet van 2 minuten: het laden en indexeren van functies in Python-modules tijdens het opstarten heeft een limiet van 2 minuten voor Python 3.13 en hoger, of voor oudere Python-versies waarvoor
PYTHON_ENABLE_INIT_INDEXINGingeschakeld is. Als uw app dit overschrijdt, vermindert u top-level imports of gebruikt u lazy imports (importeer modules binnen de functietekst in plaats van in de globale scope).
Externe build
Externe build is de aanbevolen benadering voor een implementatie met alleen code van uw Python-app naar Functions.
Met externe build verwerkt het Functions-platform de pakketinstallatie en zorgt het voor compatibiliteit met de externe runtime-omgeving. Het gebruik van externe build resulteert ook in een kleiner implementatiepakket.
U kunt externe build gebruiken wanneer u uw Python-app publiceert met behulp van deze hulpprogramma's:
-
Azure Functions Core Tools: de
func azure functionapp publishopdracht vraagt standaard een externe build aan bij het publiceren van Python-apps. -
AZ CLI:
az functionapp deployment source config-zipmaakt standaard gebruik van externe build bij het implementeren van Python-apps. - Visual Studio Code: de Azure Functions: Implementeren in Azure... opdracht maakt altijd gebruik van een externe build.
-
Continue levering met behulp van GitHub Actions: de Azure/functions-action@v1-actie maakt gebruik van externe build wanneer de
remote-buildparameter is ingesteldtruevoor het Flex Consumption-abonnement of wanneerscm-do-build-during-deploymentenenable-oryx-buildzijn ingesteldtrueop Toegewezen abonnementen.
Zie Remote Build inschakelen voor andere scenario's, zoals Continue levering met Azure Pipelines.
Externe build ondersteunt ook aangepaste pakketindexen wanneer u de PIP_EXTRA_INDEX_URL app-instelling gebruikt. Zie Remote build voor meer informatie.
Belangrijk
Een externe build installeert alle afhankelijkheden die worden vermeld in requirements.txt. Als u ervoor wilt zorgen dat alle vereiste pakketten zijn geïnstalleerd, moet u deze afhankelijkheden in uw requirements.txt bestand opnemen.
Lokale versie
Als u geen externe build aanvraagt, worden in plaats daarvan afhankelijkheden op uw computer geïnstalleerd. Het hele lokale project en de afhankelijkheden worden vervolgens lokaal verpakt en geïmplementeerd in uw functie-app. Het gebruik van lokale buildresultaten leidt tot een grotere pakketupload.
U moet ook afhankelijkheden installeren in de juiste map. Gebruik pip install --target="./.python_packages/lib/site-packages" om de vereiste afhankelijkheden in uw lokale .python_packages/lib/site-packages map te installeren.
Als u bijvoorbeeld uw afhankelijkheden in een requirements.txt bestand hebt, kunt u deze opdracht uitvoeren:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
Lokale build gebruiken wanneer:
- U ontwikkelt lokaal in Linux of macOS.
- Externe bouw is niet beschikbaar of wordt beperkt.
- U wilt afhankelijkheden definiëren in een ander bestand dan
requirements.txt, zoalspyproject.toml.
De volgende hulpprogramma's kunnen worden geconfigureerd voor het gebruik van lokale build:
-
Azure Functions Core Tools: gebruiken
func azure functionapp publishmet de--no-buildvlag. -
AZ CLI:
az functionapp deployment source config-zipmet de--build-remote=falsevlag. -
Continue levering met GitHub Actions: stel de
remote-buildparameter in opfalsevoor het Flex Consumption-plan of stelscm-do-build-during-deploymentenenable-oryx-buildin opfalsevoor Dedicated-plannen.
Belangrijk
Gebruik geen lokale build bij het ontwikkelen van uw Python-apps op een Windows-computer. Pakketten die zijn gebouwd op een Windows-computer, hebben vaak problemen met het implementeren en uitvoeren op Linux in Azure Functions. Gebruik alleen lokale build als u zeker weet dat het pakket wordt uitgevoerd op Linux-systemen.
Aangepaste afhankelijkheden
Azure Functions ondersteunt aangepaste en andere niet-PyPI-afhankelijkheden met behulp van de PIP_EXTRA_INDEX_URL app-instelling of door een lokale build te maken op een Linux- of macOS-computer.
Externe build met een extra index-URL
Wanneer uw privépakketten online beschikbaar zijn, kunt u een externe build aanvragen nadat u de locatie van het privépakket hebt ingesteld met behulp van de PIP_EXTRA_INDEX_URL app-instelling.
Wanneer u instelt PIP_EXTRA_INDEX_URL, gebruiken externe builds deze pakketfeed tijdens de implementatie.
PIP_INDEX_URL vervangt de pakketindex, dus overweeg PIP_EXTRA_INDEX_URL in plaats daarvan om onverwacht gedrag te voorkomen.
Lokale pakketten of wielen
Lokale pakketten en wielen worden ondersteund bij het bouwen van Python Azure Function-apps.
Als u deze pakketten of wielen wilt installeren met behulp van een externe build, kunt u de afhankelijkheden in uw requirements.txt bestand opnemen en implementeren met externe build ingeschakeld.
Het requirements.txt bestand kan er bijvoorbeeld uitzien als het volgende codefragment:
# Installing a custom wheel
<my_package_wheel>.whl
# Installing a local package
path/to/my/package
Als u deze afhankelijkheden wilt installeren door gebruik te maken van lokale build, installeert u de afhankelijkheden in uw lokale .python_packages/lib/site-packages map en implementeert u met de externe build uitgeschakeld.
Als u bijvoorbeeld de pakketten hebt gedefinieerd in uw requirements.txt bestand, kunt u installeren en publiceren met behulp van de volgende opdrachten en Core Tools:
pip install --target="./.python_packages/lib/site-packages" -r requirements.txt
func azure functionapp publish <APP_NAME> --no-build