Megosztás:


Python Azure Functions-alkalmazások létrehozása

Az Azure Functions három buildelési lehetőséget támogat a Python-alkalmazások Azure-ban való közzétételéhez. Válassza ki a buildelési módszert a helyi környezet, az alkalmazásfüggőségek és a futtatókörnyezet követelményei alapján.

Gyors összehasonlítás a build műveletekhez

Üzembe helyezés típusa Ahol a függőségek telepítve vannak Tipikus használati eset
Távoli buildelés (ajánlott) Azure (App Service) Alapértelmezett, a legtöbb felhasználó számára ajánlott
Helyi build Az Ön gépe Linux/macOS fejlesztők, korlátozott Windows-esetek
Egyéni függőségek Extra index URL-cím használatával vagy helyi telepítéssel kezelhető PyPI-n kívüli függőségek

Üzembehelyezési csomagokkal kapcsolatos szempontok

A Python-függvényalkalmazás Azure-ban való üzembe helyezésekor tartsa szem előtt az alábbi csomagolási követelményeket:

  • A csomag tartalma, nem a mappa: Helyezze üzembe a projektmappa tartalmát, ne magát a mappát.
  • Gyökérszintű host.json: Győződjön meg arról, hogy egyetlen host.json fájl található az üzembehelyezési csomag gyökerénél, nem almappába ágyazva.
  • Fejlesztői fájlok kizárása: Kizárhatja az olyan mappákat, mint például tests/a , .github/és .venv*/ az üzembe helyezett csomagból, ha beleveti őket a fájlba .funcignore.
  • A buildkörnyezetnek meg kell egyeznie az éles környezettel: A függőségeket egy ubuntu gépre kell építeni az éles alkalmazással megegyező Python-verzióval. A távoli build automatikusan kezeli ezt a forgatókönyvet.
  • A függőségeket a következő helyre ./.python_packages/lib/site-packageskell telepíteni: A távoli build a megfelelő könyvtárban requirements.txt felsorolt összes függőséget telepíti.
  • Tartsa szem előtt az üzembehelyezési csomag méretét: a nagy függőségi csoportok növelik a buildelési időt, a hideg kezdés késését, valamint a modulok importálási és inicializálási idejét. A nagy tudományos vagy gépi tanulási kódtárakkal (beleértve pytorch) rendelkező alkalmazásokat különösen érintik.
  • A távoli build 60 másodperces időtúllépéssel rendelkezik: Ha a függőség telepítése meghaladja a korlátot, a build meghiúsul. Ebben az esetben fontolja meg egy helyi build használatát és üzembe helyezését előre összeállított függőségekkel.
  • A modulimportálás 2 perces időkorláttal rendelkezik: a Python-modulok betöltése és a függvényindexelés indításkor 2 perces korlátot biztosít a Python 3.13-ra és újabb verziókra, illetve a régebbi, engedélyezett Python-verziókra PYTHON_ENABLE_INIT_INDEXING . Ha az alkalmazás túllépi ezt, csökkentse a felső szintű importálást, vagy használjon lusta importálást (a függvény törzsében lévő modulokat importálja a globális hatókör helyett).

Távoli buildelés

A Távoli buildelés a Python-alkalmazás csak kóddal történő üzembe helyezésének ajánlott módszere a Functionsben.

Távoli buildelés esetén a Functions platform kezeli a csomagtelepítést, és biztosítja a távoli futtatókörnyezettel való kompatibilitást. A távoli build használata kisebb üzembehelyezési csomagot is eredményez.

A Python-alkalmazás közzétételekor a következő eszközökkel használhatja a távoli buildelést:

Ha engedélyezni szeretné a távoli buildelést más forgatókönyvekhez, például az Azure Pipelines folyamatos kézbesítéséhez, tekintse meg a távoli build engedélyezését.

A távoli build az egyéni csomagindexeket is támogatja, ha az PIP_EXTRA_INDEX_URL alkalmazásbeállítást használja. További információ: Távoli build.

Fontos

A távoli build a listában felsorolt összes függőséget requirements.txttelepíti. Annak érdekében, hogy az összes szükséges csomag telepítve legyen, mindenképpen vegye fel ezeket a függőségeket a requirements.txt fájlba.

Helyi build

Ha nem kér távoli buildet, a függőségek ehelyett a számítógépre lesznek telepítve. A rendszer ezután helyileg csomagolja be a teljes helyi projektet és függőségeket, és üzembe helyezi a függvényalkalmazásban. A helyi buildelés nagyobb csomagfeltöltést eredményez.

A függőségeket a megfelelő könyvtárba is telepítenie kell. A szükséges függőségek helyi .python_packages/lib/site-packages mappába való telepítéséhez a pip install --target="./.python_packages/lib/site-packages"-t használja. Ha például a függőségek egy requirements.txt fájlban vannak felsorolva, futtassa ezt a parancsot:

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

Helyi build használata a következő esetekben:

  • Helyi fejlesztés linuxos vagy macOS rendszeren.
  • A távoli build nem érhető el vagy korlátozott.
  • Szeretné a függőségeket egy másik fájlban definiálni, mint például pyproject.toml a requirements.txt helyett.

A következő eszközök konfigurálhatók helyi build használatára:

Fontos

A Python-alkalmazások Windows rendszerű számítógépen történő fejlesztésekor ne használjon helyi buildet. A Windows rendszerű számítógépekre épülő csomagok gyakran problémákat tapasztalnak a Linuxon az Azure Functionsben való üzembe helyezéssel és futtatásukkal kapcsolatban. Csak akkor használjon helyi buildet, ha biztos abban, hogy a csomag Linux-alapú rendszereken fut.

Egyéni függőségek

Az Azure Functions támogatja az egyéni és egyéb nem PyPI-függőségeket az PIP_EXTRA_INDEX_URL alkalmazásbeállítás használatával, vagy egy helyi build linuxos vagy macOS rendszerű számítógépen történő létrehozásával.

Távoli build plusz index URL-címmel

Amikor a privát csomagok online elérhetők, a PIP_EXTRA_INDEX_URL alkalmazásbeállítással távoli összeállítást kérhet, miután beállította a privát csomag helyét. Amikor beállítja PIP_EXTRA_INDEX_URL, a távoli buildek ezt a csomagcsatornát használják az üzembe helyezés során. PIP_INDEX_URL lecseréli a csomagindexet, ezért a nem várt viselkedés megelőzése érdekében fontolja meg a PIP_EXTRA_INDEX_URL használatát helyette.

Helyi csomagok vagy kerekek

Az Azure-függvényalkalmazások létrehozásakor a helyi csomagok és a wheel csomagok támogatottak Pythonban.

Ha távoli buildel szeretné telepíteni ezeket a csomagokat vagy kerekeket, felveheti a függőségeket a requirements.txt fájlba, és üzembe helyezheti a távoli buildet engedélyezve.

A fájl például requirements.txt a következő kódrészlethez hasonlóan nézhet ki:

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

Ha helyi build használatával szeretné telepíteni ezeket a függőségeket, telepítse a függőségeket a helyi .python_packages/lib/site-packages mappába, és telepítse a távoli build letiltva használatával. Ha például a requirements.txt fájlban definiált csomagokkal dolgozik, a következő parancsokkal és a Core Tools eszközökkel telepítheti és közzéteheti azokat.

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