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.

Recursos Streamlit não suportados

Os seguintes recursos do Streamlit não são compatíveis no Streamlit in Snowflake:

Limitações ao carregar recursos externos no Streamlit in Snowflake

Todos os aplicativos do Streamlit in Snowflake são executados dentro da Política de segurança de conteúdo (CSP), que restringe quais recursos podem ser carregados. O Snowflake bloqueia o carregamento de código - inclusive scripts, estilos, fontes e incorporação de iframe - de qualquer domínio externo. No entanto, o carregamento de um subconjunto de recursos do Mapbox é compatível.

Quando você usa os comandos Streamlit st.map ou st.pydeck_chart, o Mapbox fornece os blocos do mapa ao renderizar o conteúdo do mapa. Mapbox é um aplicativo de terceiros e está sujeito aos Termos das ofertas externas da Snowflake.

O carregamento de imagens ou mídia de domínios externos é compatível no Streamlit in Snowflake, mas não no Snowflake Native App Framework.

Por exemplo, o código a seguir é executado sem um erro de Python, mas o script não é carregado nem executado no navegador:

# This will not work
import streamlit.components.v1 as components
components.html("""
<script src="http://www.example.com/example.js"></script>
""", height=0)
Copy

A CSP também bloqueia chamadas de front-end, que geralmente são consideradas inseguras, como eval().

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.

Limitações do Streamlit in Snowflake adicionais

O Streamlit in Snowflake tem as seguintes limitações adicionais:

Limites dos aplicativos Streamlit para recuperação de dados

Os aplicativos Streamlit executados em Streamlit in Snowflake e em Snowflake Native App têm um limite de 32 MB no tamanho das mensagens trocadas entre o backend e o frontend. As consultas que excedem 32 MB retornam o seguinte erro:

MessageSizeError: Data Size exceeds message limit

Para evitar esse limite, projete seus aplicativos Streamlit para recuperar dados em incrementos menores que 32 MB.

Streamlit in Snowflake oferece suporte apenas a estágios internos que usam criptografia do lado do cliente.

O editor Streamlit in Snowflake não oferece suporte à criação de um objeto STREAMLIT a partir de arquivos em um estágio nomeado que usa criptografia no lado do servidor. Nesta situação, Snowsight retorna um erro.

Compatibilidade parcial entre st.cache_data e st.cache_resource

st.cache_data e st.cache_resource não são totalmente suportados em Streamlit in Snowflake. O cache só funciona em uma única sessão. Os valores armazenados em cache não podem ser transferidos para outras sessões e compartilhados entre diferentes usuários de um aplicativo Streamlit.

st.file_uploader tem um limite de 200 MB para arquivos carregados

Ao usar o st.file_uploader, você pode carregar arquivos limitados a 200 MB cada. No momento, essa configuração não é compatível com o Streamlit in Snowflake. Para arquivos maiores, considere processar os dados em lotes menores ou usar métodos alternativos de upload.

Alterações ao trabalhar com parâmetros de consulta no Streamlit in Snowflake

Para st.query_params no Streamlit in Snowflake, um prefixo streamlit- é adicionado a cada chave de parâmetro de consulta no URL. Esse prefixo não é incluído ao usar st.query_params para obter ou definir um valor.

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

Os parâmetros nesse URL podem ser acessados em st.query_params como os seguintes pares de chave-valor:

{
   "first_key" : "one",
   "second_key" : "two"
}
Copy

Para obter mais informações, consulte st.query_params.