Limitações e alterações na biblioteca¶
Este tópico descreve as limitações e as alterações no comportamento dos recursos quando um recurso do Streamlit funciona de forma diferente no Snowflake e na biblioteca de código aberto.
To view release notes for each Streamlit version, see Streamlit documentation.
Limitations and changes for all runtimes¶
As seguintes limitações se aplicam a todos os apps Streamlit in Snowflake, independentemente do ambiente de tempo de execução:
Componentes personalizados com scripts externos
Using external stages isn’t supported.
Replication isn’t supported.
Using
.sofiles isn’t supported.
Limitations and changes that vary by runtime¶
A tabela a seguir compara as limitações que variam entre os tempos de execução de warehouse e de contêiner (versão preliminar). Para obter mais informações sobre os ambientes de tempo de execução, consulte Ambientes de tempo de execução para apps Streamlit.
Limitação |
Tempo de execução de warehouse |
Tempo de execução de contêiner (versão preliminar) |
|---|---|---|
3.9, 3.10, 3.11 |
Somente 3.11 |
|
1.22 ou superior (seleção limitada) |
1.50 ou superior (qualquer versão, incluindo |
|
Not supported |
Com suporte |
|
32 MB |
Configurável |
|
200 MB |
Configurável |
|
Exige confirmação dos Termos de ofertas externas. |
Não sujeito aos Termos de ofertas externas. |
|
Armazenamento em cache de sessão única. Os valores armazenados em cache não podem ser compartilhados entre as sessões. |
Suporte total. Os valores armazenados em cache são compartilhados com todas as sessões do visualizador, a menos que você use um escopo de sessão no decorador de cache. |
|
Compatível como parâmetro legado em CREATE STREAMLIT. |
Not supported |
|
Janela de manutenção |
Não aplicável |
Sujeito à janela de manutenção do Snowpark Container Services. |
Serviço de arquivo estático |
Not supported |
Com suporte |
Detalhes da limitação¶
Recursos Streamlit não suportados¶
The following Streamlit features are not fully supported in Streamlit in Snowflake:
-
The
page_title,page_icon, andmenu_itemsproperties of thest.set_page_configcommand aren’t supported. Arquivo
config.toml:Para obter um resumo das opções de configuração compatíveis e incompatíveis, consulte Configuração do Streamlit.
Loading external resources¶
Todos os apps Streamlit in Snowflake são executados sob uma política de segurança de conteúdo (Content Security Policy, CSP), que restringe os recursos que podem ser carregados. A CSP bloqueia o carregamento de código de domínios externos e a incorporação de conteúdo externo em iframes. Ela também bloqueia chamadas de front-end, que geralmente são consideradas inseguras, como eval(). Para obter mais informações sobre o CSP, consulte Política de segurança de conteúdo.
Por exemplo, o código a seguir é executado sem um erro de Python, mas o script não é carregado nem executado no navegador:
# This won't work
st.html(
"<script src="http://www.example.com/example.js"></script>",
unsafe_allow_javascript=True
)
Nota
Os desenvolvedores de aplicativos são responsáveis pelas verificações de segurança e pela cadeia de fornecimento de software do código do aplicativo Streamlit in Snowflake de acordo com o Modelo de Responsabilidade Compartilhada do Snowflake.
Componentes personalizados¶
Como consequência da CSP, os componentes personalizados não podem carregar scripts de domínios externos em tempos de execução de warehouse e contêiner. Como os componentes baseados em pacotes usam um diretório de ativos para exibir o conteúdo estático, as seguintes diferenças se aplicam:
Nos tempos de execução de warehouse, não há suporte para componentes da v2 baseados em pacotes que utilizam um diretório de ativos.
Nos tempos de execução de contêiner, os componentes da v2 baseados em pacotes são totalmente compatíveis.
Para usar um componente personalizado da v2 em um tempo de execução de warehouse, ele deve ser definido com HTML, CSS e JavaScript em linha.
Nota
Components imported from a third-party source are subject to the license attached to that component. You are responsible for ensuring that your use of a component is permitted by its license.
Snowflake doesn’t build or maintain third-party components that you might import into Streamlit in Snowflake. Use of such components is at your own risk and is not subject to any warranties, service level agreements, or other similar guarantees by Snowflake.
Parâmetros de consulta¶
For st.query_params in Streamlit in Snowflake, a streamlit- prefix is added to each query parameter key in the URL. This prefix
isn’t included when you use st.query_params to get or set a value.
Por exemplo, considere o seguinte URL:
https://app.snowflake.com/org/account_name/#/streamlit-apps/DB.SCHEMA.APP_NAME?streamlit-first_key=one&streamlit-second_key=two
The parameters in this URL are accessible in st.query_params as the following key-value pairs:
{
"first_key" : "one",
"second_key" : "two"
}
Exibindo grandes quantidades de dados¶
Streamlit apps running in warehouse runtimes have a 32-MB limit on the size of messages exchanged between the backend and the
frontend. If you attempt to display more than 32 MB of data with a single Streamlit command, like st.dataframe, the following error occurs:
MessageSizeError: Data Size exceeds message limit
Para evitar esse limite, projete seu aplicativo Streamlit para exibir dados em incrementos menores que 32 MB. Não há limite explícito para o tamanho de uma consulta que você pode executar ou para a quantidade de dados que é possível ter na memória.
Em tempos de execução de contêiner, esse limite é definido como 200 MB e podem ser alterados definindo a opção de configuração do Streamlit server.maxMessageSize. No entanto, o tamanho das mensagens não pode exceder a capacidade da memória do contêiner. Permitir mensagens maiores pode exceder o limite de memória do contêiner, especialmente se os visualizadores simultâneos estiverem presentes.
Carregamentos de arquivos¶
O limite padrão de tamanho de arquivo para st.file_uploader e st.chat_input é 200 MB. Em tempos de execução de warehouse, esse valor não é configurável. Em tempos de execução de contêiner, esse limite pode ser alterado definindo a opção de configuração do Streamlit server.maxUploadSize. No entanto, o tamanho dos arquivos não pode exceder a capacidade da memória do contêiner. Permitir arquivos maiores pode exceder o limite de memória do contêiner, especialmente se os visualizadores simultâneos estiverem presentes.
Para arquivos maiores, considere processar dados em lotes menores ou usar métodos alternativos de carregamento.
Mapbox e Carto¶
Mapbox e Carto fornecem blocos de mapa quando você usa os comandos st.map ou st.pydeck_chart do Streamlit.
Em tempos de execução de warehouse, que gerenciam seus pacotes com o conda, o Mapbox e o Carto são aplicativos de terceiros sujeitos aos Termos de ofertas externas do Snowflake.
Para usar esses comandos em tempos de execução de warehouse, você deve confirmar os Termos de ofertas externas. Os tempos de execução de contêiner não exigem essa confirmação.
Armazenamento em cache¶
O armazenamento em cache é parcialmente compatível com os tempos de execução de warehouse e totalmente compatível com os tempos de execução de contêiner.
Em tempos de execução de warehouse, o armazenamento em cache é limitado ao cache de sessão única. Os valores armazenados em cache não podem ser compartilhados entre as sessões. Em tempos de execução de contêiner, o armazenamento em cache é totalmente compatível. Os valores armazenados em cache são compartilhados com todas as sessões de visualizador.