Rezygnacja ze wstępnie zainstalowanych bibliotek Python dla aplikacji usługi Databricks

Na tej stronie opisano, jak zrezygnować ze wstępnie zainstalowanych bibliotek Python w aplikacji usługi Databricks skalowanej w poziomie, zarządzać własnymi zależnościami i włączać wstępnie zainstalowane biblioteki później. Rezygnacja z tej opcji jest dostępna tylko w aplikacjach skalowanych horyzontalnie, które zostały przekonwertowane ze standardowych aplikacji. Zobacz Konwertowanie standardowej aplikacji do korzystania ze skalowania poziomego. Skalowanie w poziomie jest w fazie beta.

Gdy przekształcisz aplikację standardową w aplikację skalowaną poziomo, usługa Azure Databricks przypisze przekonwertowaną aplikację do wstępnie zainstalowanych bibliotek Pythona, dzięki czemu istniejące instrukcje importu w aplikacji nadal działają. Zrezygnuj z uruchamiania aplikacji na czystym obrazie podstawowego systemu operacyjnego i zadeklaruj każdą bibliotekę samodzielnie.

Rezygnacja ze wstępnie zainstalowanych bibliotek

Rezygnacja z tej opcji powoduje, że usługa Azure Databricks utworzy kolejne wdrożenie na podstawie czystego obrazu bazowego systemu operacyjnego. Wstępnie zainstalowane biblioteki nie są już dostępne, chyba że zadeklarujesz je w requirements.txt lub pyproject.toml.

Aby zrezygnować:

  1. Na stronie szczegółów aplikacji kliknij pozycję Edytuj.
  2. W kroku Configure wyczyść pole wyboru Użyj wstępnie zainstalowanych bibliotek Python.
  3. Kliknij przycisk Zapisz. Obecnie uruchomione wdrożenie pozostaje bez wpływu.
  4. Ponownie wdróż aplikację na karcie Wdrożenia. To nowe wdrożenie jest tworzone na podstawie czystego bazowego obrazu systemu operacyjnego.

Twoje zależności mogą pośrednio obejmować wstępnie zainstalowane biblioteki, więc nie zawsze jest jasne, których bibliotek aplikacja wymaga bezpośrednio. Znajdź brakujące biblioteki w aplikacji testowej przed rezygnacją w środowisku produkcyjnym:

  1. Utwórz nową aplikację skalowaną w poziomie. Nowe aplikacje skalowane poziomo działają już na czystym bazowym obrazie systemu operacyjnego, więc jest to zgodne z docelowym stanem po wyłączeniu tej opcji.
  2. Wdróż kod źródłowy aplikacji produkcyjnej do aplikacji testowej. Zaktualizuj requirements.txt (lub pyproject.toml) i wdrażaj ponownie, aż aplikacja testowa się uruchomi, zacznie obsługiwać żądania i przejdzie testy.
  3. Skopiuj końcowe deklaracje zależności do źródła aplikacji produkcyjnej.
  4. W aplikacji produkcyjnej wykonaj kroki opisane w temacie Rezygnacja ze wstępnie zainstalowanych bibliotek i wdrażanie zaktualizowanego źródła.

Środowisko produkcyjne nadal działa na obrazie ze wstępnie zainstalowanymi bibliotekami, dopóki nowe wdrożenie nie przejdzie testów kondycji, więc takie podejście pozwala uniknąć przestojów, podczas gdy wykrywasz brakujące zależności w aplikacji testowej.

Usuwanie błędów po rezygnacji

Najczęstszą awarią po rezygnacji jest ModuleNotFoundError podczas uruchamiania aplikacji, spowodowana przez framework lub bibliotekę, które kod importował niejawnie z preinstalowanego zestawu. Aby rozwiązać ten problem:

  1. Otwórz kartę Dzienniki na stronie szczegółów aplikacji.
  2. Znajdź brakującą nazwę modułu w dziennikach kompilacji lub środowiska uruchomieniowego.
  3. Dodaj odpowiedni pakiet do requirements.txt (lub pyproject.toml) i ponownie wdróż.

Nowe wdrożenie zastępuje uruchomione wdrożenie tylko wtedy, gdy proces aplikacji pozostanie uruchomiony przez pierwsze kilka sekund po uruchomieniu. Wdrożenie, które nie przejmuje ruchu, jeśli można z niego zrezygnować, a które natychmiast ulega awarii z powodu brakującego importu, nigdy nie przejmie ruchu, a ruch nadal będzie kierowany do poprzedniego działającego wdrożenia, podczas gdy poprawiasz listę zależności. Kontrola uruchamiania jest powierzchowna, więc po zrezygnowaniu z niej przetestuj, czy aplikacja rzeczywiście obsługuje żądania, zamiast polegać na tym, że wykryje wadliwe wdrożenia.

Włącz ponownie preinstalowane biblioteki

Aby wrócić do wstępnie zainstalowanych bibliotek po rezygnacji z tej opcji:

  1. Na stronie szczegółów aplikacji kliknij pozycję Edytuj.
  2. W kroku Configure zaznacz pole wyboru Użyj wstępnie zainstalowanych bibliotek Python.
  3. Kliknij przycisk Zapisz.
  4. Ponownie wdróż aplikację na karcie Wdrożenia . To nowe wdrożenie jest kompilowane na podstawie obrazu podstawowego ze wstępnie zainstalowanymi bibliotekami.

Twoje requirements.txt i pyproject.toml nadal mają zastosowanie, więc wszelkie jawne deklaracje dodane podczas rezygnacji są zachowywane.

Note

Konwertowanie aplikacji skalowanej w poziomie z powrotem do standardowej aplikacji spowoduje również przywrócenie wstępnie zainstalowanych bibliotek: aplikacja standardowa zostanie ponownie skompilowana z nimi, niezależnie od tego, czy zrezygnowano. Jeśli później przekonwertujesz aplikację na skalowaną w poziomie ponownie, będzie ona zawierać wstępnie zainstalowane biblioteki do momentu ponownego rezygnacji.