Modification d’une application Streamlit déployée¶
Après avoir déployé une application Streamlit dans Snowsight, vous pouvez modifier le code de l’application et les dépendances en utilisant les commandes Snowsight ou SQL. La façon dont vos modifications prennent effet dépend de l’environnement d’exécution et de la manière dont l’application a été créée.
Note
Les applications créées avec le paramètre ROOT_LOCATION (applications existantes) ont des capacités d’édition limitées et doivent être convertis pour utiliser le paramètre FROM pour une fonctionnalité complète. Pour plus d’informations, voir Comprendre les différents types d’objets Streamlit.
Cette page ne couvre que les applications créées avec le paramètre FROM.
Les environnements d’exécution des conteneurs et des entrepôts sont soumis à des conditions de concurrence possibles lorsque plusieurs personnes modifient simultanément la même application. Voir la section Considérations relatives à l’édition collaborative ci-dessous pour plus de détails et les meilleures pratiques.
Modification des méthodes¶
Vous pouvez modifier votre application via un éditeur dans le navigateur dans Snowsight ou en chargeant des fichiers avec les commandes SQL.
Connectez-vous à Snowsight.
Dans le menu de navigation, sélectionnez Projects, » Streamlit puis votre application Streamlit.
Dans le coin supérieur droit, sélectionnez Edit.
Dans l’explorateur de fichiers, sélectionnez ou créez un nouveau fichier à modifier :
Pour modifier un fichier existant, sélectionnez-le dans l’explorateur de fichiers.
Pour créer un nouveau fichier, sélectionnez + (Ajouter) » Create new file, saisissez le nom de fichier et sélectionnez Create. Vous pouvez inclure des sous-répertoires dans le nom du fichier, comme
subdir/new_file.py.Pour charger un fichier à partir de votre machine locale, sélectionnez + (Ajouter) » Upload file, choisissez le fichier à charger, modifiez le nom du fichier et le chemin si nécessaire, puis sélectionnez Upload.
Effectuez vos modifications dans le volet de l’éditeur.
Les modifications sont automatiquement enregistrées dans l’emplacement source de l’application, au bout de quelques secondes.
En option : Sélectionnez Run.
Si vous ne voulez pas attendre quelques secondes pour que les modifications soient enregistrées, vous pouvez sélectionner Run pour copier immédiatement les modifications.
Si votre application utilise un environnement d’exécution d’entrepôt, les lecteurs doivent sélectionner Run pour copier les modifications dans leur instance d’application. Si votre application utilise un environnement d’exécution de conteneur, les modifications sont directement enregistrées dans la source de l’application en direct et seront visibles par tous les utilisateurs lors de leur prochaine interaction avec l’application.
Si vous avez modifié les fichiers d’application en zone de préparation, vous pouvez CREATE OR REPLACE votre application avec la commande suivante :
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);
Sinon, si vous souhaitez mettre à jour vos fichiers d’application sur place ou si vous ne voulez mettre à jour qu’un sous-ensemble de vos fichiers d’application, vous pouvez utiliser les commandes suivantes :
Obtenir l’URI de l’emplacement source de votre application :
DESCRIBE STREAMLIT my_app;
La valeur
live_version_location_uriest l’emplacement source de votre application. Copiez-la pour l’utiliser à l’étape suivante.Téléchargez un ou plusieurs fichiers d’application mis à jour vers l’emplacement source avec PUT ou COPY FILES.
COPY FILES INTO '<live_version_location_uri>' FROM @my_stage FILES = ('streamlit_app.py');;
Note
Snowflake CLI version 3.14.0 ou ultérieure est requise. La version 3.14+ utilise par défaut la syntaxe moderne CREATE STREAMLIT.
Si vous avez un ensemble complet de fichiers d’application modifiés sur votre machine locale (y compris son fichier snowflake.yml pour Snow CLI), vous pouvez redéployer votre application avec la commande suivante :
snow streamlit deploy --replace
Différences de comportement en matière d’environnements d’exécution¶
La façon dont vos modifications prennent effet dépend du type d’environnement d’exécution de votre application.
Container Runtime¶
Lorsque vous modifiez une application de Container Runtime :
Les modifications apportées à la source de votre application sont directement dirigées vers l’application en direct.
Les utilisateurs actuels voient les mises à jour la prochaine fois qu’ils interagissent avec l’application et déclenchent une nouvelle exécution. (L’`Option de configuration Streamlit<https://docs.streamlit.io/develop/api-reference/configuration/config.toml#server>`_
server.runOnSaveest désactivée par défaut).Le bouton Run est disponible pour les utilisateurs, mais non requis pour propager les modifications à une session de visualisation ou de modification en cours.
Tous les utilisateurs voient la même instance d’application avec des changements immédiats.
Même si l’application en direct est partagée entre les utilisateurs, la vue du code source dans les éditeurs Snowsight ne l’est pas. Par conséquent, les applications sur les Container Runtimes sont toujours soumises à des conditions de compétition lorsque plusieurs personnes modifient l’application simultanément. Voir la section Considérations relatives à l’édition collaborative ci-dessous pour plus de détails et les meilleures pratiques.
Runtime d’entrepôt¶
Lorsque vous modifiez un runtime d’entrepôt :
Le code source de l’application est copié au démarrage de l’instance de chaque utilisateur.
Les utilisateurs actuels doivent sélectionner Run pour copier les mises à jour effectuées sur la source au cours de leur session.
Même la personne qui effectue les modifications doit cliquer sur Run pour voir les changements dans son volet de prévisualisation.
Chaque utilisateur dispose de sa propre instance d’application isolée.
Considérations relatives à l’édition collaborative¶
Lorsque plusieurs personnes modifient la même application, tenez compte des conflits potentiels. Les applications de runtime des conteneurs et des entrepôts sont soumises à la condition de compétition suivante si plus d’une personne modifie l’application simultanément.
Conditions de compétition¶
L’éditeur Snowsight fonctionne comme suit :
Le code source actuel est copié dans le volet de l’éditeur lorsque vous l’ouvrez ou que vous utilisez le navigateur de fichiers pour ouvrir un fichier.
Si vous affichez un fichier dans le volet de l’éditeur, il ne se met pas à jour automatiquement lorsque des modifications sont apportées par d’autres personnes.
Si vous apportez des modifications dans le volet de votre éditeur, l’enregistrement automatique écrasera toutes les modifications apportées par d’autres personnes après l’ouverture de l’éditeur.
Il n’y a pas de fusion automatique des modifications en conflit.
Par exemple, la séquence suivante peut entraîner des modifications perdues :
Le développeur A ouvre l’éditeur à 2:00 PM.
Le développeur B effectue et enregistre les modifications à 2:15 PM.
Le développeur A enregistre les modifications à 2:30 PM.
Les modifications du développeur B sont perdues (écrasées par le développeur A).
Bonnes pratiques pour l’édition d’équipe¶
Pour éviter les conflits lorsque vous travaillez avec une équipe :
Communiquez avec les membres de votre équipe avant de procéder à des modifications.
Conservez vos fichiers sources dans un référentiel Git et déployez votre code à partir de là.
Utilisez des applications de développement distinctes pour tester les modifications.
Rechargez l’éditeur Snowsight pour obtenir la dernière version immédiatement avant d’effectuer des modifications.