Temporizador de sono personalizado para um aplicativo Streamlit

Este tópico descreve como definir um temporizador personalizado de suspensão para um app Streamlit no Streamlit in Snowflake em warehouses.

Sobre temporizadores de suspensão para apps Streamlit

Os temporizadores de suspensão se aplicam apenas a apps Streamlit que usam tempos de execução de warehouse. Os tempos de execução de contêiner (versão preliminar) são destinados a serviços de longa duração e não são compatíveis com temporizadores de suspensão.

O temporizador de suspensão é configurado no arquivo de configuração config.toml do app Streamlit. Se o app foi criado com o parâmetro ROOT_LOCATION, você deve usar SQL para PUT o arquivo de configuração no local da área de preparação do app. Caso contrário, você pode usar SQL ou o editor do Snowsight Streamlit in Snowflake.

Tempo limite de WebSocket

Quando um visualizador abre um app Streamlit, uma conexão WebSocket é estabelecida entre o navegador do visualizador e o servidor Streamlit. Se não houver um temporizador personalizado de suspensão, o app será suspenso automaticamente depois de esgotar o tempo limite da conexão WebSocket por inatividade. No nível da conta, o tempo limite padrão de WebSocket é de aproximadamente 15 minutos. Você pode mudar o tempo limite de WebSocket em sua conta para todos os apps Streamlit entrando em contato com o suporte Snowflake.

Quando você define um temporizador personalizado de suspensão, o temporizador tenta manter o app ativo até que o limite de tempo especificado seja atingido e, em seguida, tenta encerrar a conexão normalmente. Entretanto, dependendo das configurações do navegador do usuário, o mecanismo de temporização pode ser suspenso ou atrasado por uma guia do navegador inativa. Nesses casos, o app está sujeito às configurações de tempo limite de WebSocket. Portanto, se você definir um temporizador personalizado de suspensão inferior ao tempo limite de WebSocket, seu app poderá não ser suspenso automaticamente de modo tão rápida quanto o esperado em alguns cenários. Para obter os melhores resultados, defina o tempo limite de WebSocket com um valor igual ao menor temporizador personalizado de suspensão que seus apps usam.

Além disso, qualquer movimento do mouse sobre um app redefine o tempo limite de WebSocket e o temporizador personalizado de suspensão.

Definição de temporizador personalizado de suspensão por meio do Snowsight

Se o app Streamlit usa o tempo de execução de warehouse, para reduzir os custos de warehouse do código, você pode definir um temporizador personalizado de suspensão para o app Streamlit ser suspenso automaticamente. Se o app foi criado com o parâmetro ROOT_LOCATION, você deverá usar o comando PUT em vez do Snowsight.

  1. Faça login no Snowsight.

  2. No menu de navegação, clique em Projects » Streamlit e selecione seu app Streamlit.

  3. No canto superior direito, selecione Edit.

  4. Se .streamlit/config.toml não existir, no explorador de arquivos à esquerda, selecione Ícone de mais » Create new file. Insira .streamlit/config.toml e selecione Create.

  5. No explorador de arquivos à esquerda, navegue até .streamlit/config.toml.

  6. No editor de arquivos, defina o valor de streamlitSleepTimeoutMinutes na tabela [snowflake.sleep].

    Por exemplo, se você quer que o app Streamlit seja suspenso automaticamente após 8 minutos, adicione o seguinte texto ao arquivo config.toml:

    [snowflake]
    [snowflake.sleep]
    streamlitSleepTimeoutMinutes = 8
    
    Copy

Definição de temporizador personalizado de suspensão usando o comando PUT

Se o app Streamlit foi criado com o parâmetro ROOT_LOCATION, você deve usar o comando PUT para modificar o arquivo de configuração do app. Se o app Streamlit foi criado com o parâmetro FROM, você pode usar o comando PUT ou o Snowsight para modificar o arquivo de configuração do app.

  1. Crie ou modifique o arquivo config.toml em sua máquina local para definir streamlitSleepTimeoutMinutes na tabela [snowflake.sleep].

    Por exemplo, se você quer que o app Streamlit seja suspenso automaticamente após 8 minutos, inclua o seguinte texto no arquivo config.toml:

    [snowflake]
    [snowflake.sleep]
    streamlitSleepTimeoutMinutes = 8
    
    Copy
  2. Carregue o arquivo config.toml no local da área de preparação do seu app.

    Se o app foi criado com o parâmetro ROOT_LOCATION, execute o seguinte comando:

    PUT file:///<path_to_your_local_directory>/config.toml @streamlit_db.streamlit_schema.streamlit_stage/.streamlit/ overwrite=true auto_compress=false;
    
    Copy

    Se o app foi criado com o parâmetro FROM, execute o seguinte comando:

    PUT file:///<path_to_your_local_directory>/config.toml snow://streamlit/streamlit_db.streamlit_schema.streamlit_stage/versions/live/.streamlit/ overwrite=true auto_compress=false;
    
    Copy

Para obter mais informações sobre como trabalhar com arquivos Streamlit, consulte Criação e implementação de aplicativos Streamlit usando SQL.

Nota

Você pode definir o streamlitSleepTimeoutMinutes para qualquer valor entre 5 a 240 minutos.

Se você não criar o arquivo de configuração para especificar o temporizador, o tempo padrão de suspensão automática será de 15 minutos.