Edição de um aplicativo Streamlit implantado¶
Após implementar um app Streamlit no Snowsight, é possível editar o código do app e as dependências usando o Snowsight ou comandos SQL. A maneira como suas alterações entram em vigor depende do ambiente de tempo de execução e de como o app foi criado.
Nota
Aplicativos criados com o parâmetro ROOT_LOCATION (aplicativos herdados) têm recursos de edição limitados e devem ser convertidos para usar o parâmetro FROM para obter funcionalidade completa. Para obter mais informações, consulte Explicação dos diferentes tipos de objetos Streamlit.
Esta página aborda apenas aplicativos criados com o parâmetro FROM.
Os ambientes de tempo de execução de contêiner e warehouse estão sujeitos a possíveis condições de corrida quando várias pessoas editam o mesmo app simultaneamente. Consulte a seção Considerações sobre edição colaborativa abaixo para obter detalhes e práticas recomendadas.
Métodos de edição¶
É possível editar seu app por meio de um editor no navegador no Snowsight ou fazendo upload de arquivos usando comandos SQL.
Faça login no Snowsight.
No menu de navegação, selecione Projects » Streamlit e, em seguida, selecione sua tabela dinâmica.
No canto superior direito, selecione Edit.
No explorador de arquivos, selecione ou crie um novo arquivo para editar:
Para editar um arquivo existente, selecione-o no explorador de arquivos.
Para criar um novo arquivo, selecione + (Adicionar) » Create new file, digite o nome do arquivo e selecione Create. É possível incluir subdiretórios no nome do arquivo, como
subdir/new_file.py.Para carregar um arquivo da sua máquina local, selecione + (Adicionar) » Upload file, escolha o arquivo a ser carregado, modifique o nome do arquivo e o caminho, se necessário, e selecione Upload.
Faça suas alterações no painel do editor.
As alterações são salvas automaticamente no local de origem do aplicativo após alguns segundos.
Opcional: Selecione Run.
Se não quiser esperar alguns segundos para que as alterações sejam salvas, é possível selecionar Run para copiar as alterações imediatamente.
Se seu app usar um tempo de execução de warehouse, os visualizadores deverão selecionar Run para copiar as alterações na instância do app. Se seu app usar um tempo de execução de contêiner, as alterações serão salvas diretamente na origem do app ativo e ficarão visíveis para todos os visualizadores na próxima vez em que eles interagirem com o app.
Se você tiver seus arquivos de app editados em uma área de preparação, poderá CREATE OR REPLACE seu app com o seguinte comando:
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);
Como alternativa, se você quiser atualizar os arquivos do seu app no local ou quiser atualizar apenas um subconjunto dos arquivos do seu app, poderá usar os seguintes comandos:
Como obter o URI do local de origem do seu aplicativo:
DESCRIBE STREAMLIT my_app;
O valor de
live_version_location_urié o local de origem do seu aplicativo. Copie-o para usar na próxima etapa.Carregar um ou mais arquivos de app atualizados para o local de origem com PUT ou COPY FILES.
COPY FILES INTO '<live_version_location_uri>' FROM @my_stage FILES = ('streamlit_app.py');;
Nota
É necessário o Snowflake CLI versão 3.14.0 ou posterior. A versão 3.14+ utiliza a moderna sintaxe CREATE STREAMLIT por padrão.
Se você tiver um conjunto completo de arquivos de apps editados em sua máquina local (incluindo seu arquivo snowflake.yml para Snow CLI), é possível reimplantar seu app com o seguinte comando:
snow streamlit deploy --replace
Diferenças de comportamento no tempo de execução¶
A maneira como suas edições entram em vigor depende do tipo de tempo de execução do seu aplicativo.
Tempo de execução de contêiner¶
Quando você edita um aplicativo de tempo de execução de contêiner:
As alterações na origem do seu aplicativo vão diretamente para o aplicativo ativo.
Os visualizadores atuais veem as atualizações na próxima vez em que interagirem com o app e acionarem uma nova execução. (A opção de configuração
server.runOnSavedo Streamlit está desativada por padrão).O botão Run está disponível para visualizadores, mas não é necessário para propagar alterações em uma sessão atual de exibição ou edição.
Todos os usuários veem a mesma instância de app com alterações imediatas.
Embora o app ao vivo seja compartilhado entre os espectadores, a visualização do código-fonte nos editores do Snowsight não é. Portanto, os apps em tempos de execução de contêineres ainda estão sujeitos a condições de corrida quando várias pessoas editam o app simultaneamente. Consulte a seção Considerações sobre edição colaborativa abaixo para obter detalhes e práticas recomendadas.
Tempo de execução de warehouse¶
Quando você edita um aplicativo de tempo de execução de warehouse:
O código-fonte do app é copiado quando a instância de cada visualizador é iniciada.
Os visualizadores atuais devem selecionar Run para copiar atualizações feitas na fonte durante sua sessão.
Até mesmo a pessoa que faz as edições deve clicar em Run para ver as alterações no painel de versão preliminar.
Cada visualizador recebe sua própria instância isolada do app.
Considerações sobre edição colaborativa¶
Quando várias pessoas editam o mesmo aplicativo, esteja ciente de possíveis conflitos. Tanto os apps de tempo de execução de contêiner quanto de warehouse estão sujeitos à seguinte condição de corrida se mais de uma pessoa editar o app simultaneamente.
Condições de corrida¶
O editor do Snowsight funciona da seguinte forma:
O código-fonte atual é copiado para o painel do editor quando você o abre ou usa o navegador de arquivos para abrir um arquivo.
Se você estiver visualizando um arquivo no painel do editor, ele não será atualizado automaticamente quando as alterações forem feitas por outras pessoas.
Se você fizer alterações no painel do editor, o salvamento automático substituirá quaisquer alterações feitas por outras pessoas depois que você abrir o editor.
Não há mesclagem automática de edições conflitantes.
Por exemplo, a seguinte sequência pode levar a alterações perdidas:
O desenvolvedor A abre o editor às 2:00 PM.
O desenvolvedor B faz e salva alterações às 2:15 PM.
do desenvolvedor A salva as alterações às 2:30 PM.
As alterações do desenvolvedor B são perdidas (substituídas pelo desenvolvedor A).
Práticas recomendadas para edição de equipe¶
Para evitar conflitos ao trabalhar com uma equipe:
Comunique-se com os membros de sua equipe antes de fazer edições.
Mantenha seus arquivos de origem em um repositório Git e implante seu código a partir daí.
Use aplicativos de desenvolvimento separados para testar alterações.
Recarregue o editor do Snowsight para obter a versão mais recente imediatamente antes de fazer alterações.