Bearbeiten einer bereitgestellten Streamlit-App¶
Nach der Bereitstellung einer Streamlit-App in Snowsight können Sie sowohl den Code der App als auch die Abhängigkeiten mit Snowsight- oder SQL-Befehlen bearbeiten. Die Art und Weise, wie Ihre Änderungen wirksam werden, hängt von der Laufzeitumgebung ab und davon, wie die App erstellt wurde.
Bemerkung
Apps, die mit dem ROOT_LOCATION-Parameter erstellt wurden (ältere Apps), haben nur begrenzte Möglichkeiten zur Bearbeitung und sollten so konvertiert werden, dass sie den FROM-Parameter verwenden, um die volle Funktionalität zu gewährleisten. Weitere Informationen dazu finden Sie unter Erläuterungen zu den verschiedenen Typen von Streamlit-Objekten.
Diese Seite behandelt nur Apps, die mit dem FROM-Parameter erstellt wurden.
Sowohl die Container- als auch Laufzeitumgebung unterliegen möglichen Race-Bedingungen, wenn mehrere Personen gleichzeitig dieselbe App bearbeiten. Weitere Details und bewährte Verfahren finden Sie im Abschnitt Hinweise zur gemeinsamen Bearbeitung weiter unten.
Bearbeitungsmethoden¶
Sie können Ihre App über einen In-Browser-Editor in Snowsight oder durch Hochladen von Dateien mithilfe von SQL-Befehlen bearbeiten.
Melden Sie sich bei Snowsight an.
Wählen Sie im Navigationsmenü die Option Projects » Streamlit und dann Ihre Ihre Streamlit-App aus.
Wählen Sie in der rechten oberen Ecke die Option Edit aus.
Wählen Sie im Datei-Explorer eine Datei aus, oder erstellen Sie eine neue Datei, die Sie bearbeiten möchten:
Um eine vorhandene Datei zu bearbeiten, wählen Sie diese im Datei-Explorer aus.
Um eine neue -Datei zu erstellen, wählen Sie + (Hinzufügen) » Create new file aus, geben Sie den Dateinamen ein, und wählen Sie dann Create aus. Sie können Unterverzeichnisse in den Dateinamen aufnehmen, z. B.
subdir/new_file.py.Um eine Datei von Ihrem lokalen Computer hochzuladen, wählen Sie + (Hinzufügen) » Upload file aus, wählen Sie die hochzuladende Datei aus, ändern Sie den Dateinamen und den Pfad, falls erforderlich, und wählen Sie dann Upload aus.
Nehmen Sie Ihre Änderungen im Editorbereich vor.
Änderungen werden nach ein paar Sekunden automatisch am Quellspeicherort der App gespeichert.
Optional: Wählen Sie Run aus.
Wenn Sie nicht ein paar Sekunden warten möchten, bis die Änderungen gespeichert werden, können Sie Run auswählen, um die Änderungen sofort zu kopieren.
Wenn Ihre App eine Warehouse-Laufzeit verwendet, müssen die Betrachtenden Run auswählen, um die Änderungen in ihre App-Instanz zu kopieren. Wenn Ihre App eine Container-Laufzeit verwendet, werden Änderungen direkt in der Quelle der Live-App gespeichert und sind bei der nächsten Interaktion mit der App für alle Betrachtenden sichtbar.
Wenn Sie Ihre bearbeiteten App-Dateien in einem Stagingbereich haben, können Sie Ihre App mit dem folgenden Befehl CREATE OR REPLACE:
CREATE OR REPLACE STREAMLIT my_app
FROM '@my_stage/app_folder'
MAIN_FILE = 'streamlit_app.py'
QUERY_WAREHOUSE = my_warehouse
RUNTIME_NAME = 'SYSTEM$ST_CONTAINER_RUNTIME_PY3_11'
COMPUTE_POOL = my_compute_pool
EXTERNAL_ACCESS_INTEGRATIONS = (pypi_access_integration);
Wenn Sie Ihre App-Dateien direkt oder nur eine Teilmenge Ihrer App-Dateien aktualisieren möchten, können Sie alternativ die folgenden Befehle verwenden:
URI des Quellspeicherorts der App abrufen:
DESCRIBE STREAMLIT my_app;
Der
live_version_location_uri-Wert ist der Quellort für Ihre App. Kopieren Sie diesen, um ihn im nächsten Schritt zu verwenden.Laden Sie eine oder mehrere aktualisierte App-Dateien mit PUT oder COPY FILES in den Quellspeicherort hoch.
COPY FILES INTO '<live_version_location_uri>' FROM @my_stage FILES = ('streamlit_app.py');;
Bemerkung
Snowflake-CLI Version 3.14.0 oder höher ist erforderlich. Version 3.14+ verwendet die moderne CREATE STREAMLIT-Syntax standardmäßig.
Wenn Sie einen vollständigen Satz bearbeiteter App-Dateien auf Ihrem lokalen Computer haben (einschließlich der snowflake.yml-Datei für Snow-CLI), können Sie Ihre App mit dem folgenden Befehl neu bereitstellen:
snow streamlit deploy --replace
Unterschiede im Laufzeitverhalten¶
Die Art und Weise, wie Ihre Änderungen wirksam werden, hängt vom Laufzeittyp Ihrer App ab.
Container-Laufzeit¶
Bei der Bearbeitung einer Container-Laufzeit-App:
Änderungen an der Quelle Ihrer App werden direkt in die Live-App übernommen.
Aktuelle Betrachtende sehen Aktualisierungen, wenn sie das nächste Mal mit der App interagieren und eine Wiederholung auslösen. (Die Streamlit Konfigurationsoption
server.runOnSaveist standardmäßig deaktiviert.)Die Run-Schaltfläche ist für Betrachtende verfügbar, aber nicht erforderlich, um Änderungen an eine aktuelle Ansichts- oder Bearbeitungssitzung weiterzugeben.
Alle Benutzenden sehen dieselbe App-Instanz mit sofortigen Änderungen.
Auch wenn die Live-App von den Betrachtenden gemeinsam genutzt wird, ist dies bei der Ansicht des Quellcodes in Snowsight-Editoren nicht der Fall. Daher unterliegen Apps in Container-Laufzeiten immer noch Race-Bedingungen, wenn mehrere Personen die App gleichzeitig bearbeiten. Weitere Details und bewährte Verfahren finden Sie im Abschnitt Hinweise zur gemeinsamen Bearbeitung weiter unten.
Warehouse-Laufzeit¶
Bei der Bearbeitung einer Warehouse-Laufzeit-App:
Der Quellcode der App wird kopiert, wenn die Instanz des jeweiligen Betrachtenden gestartet wird.
Aktuelle Betrachtende müssen Run auswählen, um Aktualisierungen zu kopieren, die während ihrer Sitzung an der Quelle vorgenommen wurden.
Auch die Person, die Änderungen vornimmt, muss auf Run klicken, um die Änderungen im Vorschaubereich zu sehen.
Jeder Betrachtende erhält seine eigene isolierte App-Instanz.
Hinweise zur gemeinsamen Bearbeitung¶
Wenn mehrere Personen dieselbe App bearbeiten, sollten Sie sich möglicher Konflikte bewusst sein. Sowohl Container- als auch Warehouse-Laufzeit-Apps unterliegen der folgenden Race-Bedingung, wenn mehr als eine Person die App gleichzeitig bearbeitet.
Race-Bedingungen¶
Der Snowsight-Editor funktioniert wie folgt:
Der aktuelle Quellcode wird in den Editorbereich kopiert, wenn Sie ihn öffnen oder den Dateinavigator verwenden, um eine Datei zu öffnen.
Wenn Sie eine Datei im Editorbereich anzeigen, wird sie nicht automatisch aktualisiert, wenn Änderungen von anderen vorgenommen werden.
Wenn Sie Änderungen in Ihrem Editorbereich vornehmen, überschreibt das automatische Speichern alle Änderungen, die von anderen vorgenommen werden, nachdem Sie den Editor geöffnet haben.
Es gibt keine automatische Zusammenführung widersprüchlicher Änderungen.
Beispielsweise kann die folgende Sequenz dazu führen, dass Änderungen verlorenen gehen:
Entwickler A öffnet den Editor um 14:00 Uhr (2:00 PM).
Entwickler B nimmt die Änderungen um 14:15 Uhr (2:15 PM) vor und speichert sie.
Entwickler A speichert die Änderungen nach 14:30 Uhr (2:30 PM).
Die Änderungen von Entwickler B gehen verloren (sie werden von Entwickler A überschrieben).
Best Practices für die Bearbeitung im Team¶
So vermeiden Sie Konflikte bei der Arbeit im Team:
Kommunizieren Sie mit Ihren Teammitgliedern, bevor Sie Änderungen vornehmen.
Bewahren Sie Ihre Quelldateien in einem Git-Repository auf, und stellen Sie Ihren Code von dort aus bereit.
Verwenden Sie separate Entwicklungs-Apps zum Testen von Änderungen.
Laden Sie den Snowsight-Editor neu, um die neueste Version zu erhalten, unmittelbar bevor Sie Änderungen vornehmen.