Ref :
https://velog.io/@jomminii/streamlit-session-state
[Streamlit] 변수를 기억하고 싶다면 Session State를 사용하십시다.
이전 글(AWS Polly(폴리)를 이용한 TTS(Text To Speech, 음성 합성) 구현 (3))에서 Streamlit과 AWS Polly를 사용해서 음성 합성 서비스를 구현해 봤는데요. 이때 아쉬웠던 것 중 하나가 aws key 들을 각 페이지를
velog.io
25일차: st.session_state
브라우저 탭에서의 Streamlit 앱 접속을 세션으로 정의합니다. Streamlit 서버에 연결하는 각 브라우저 탭마다 새로운 세션이 생성됩니다. 앱과 상호작용할 때마다 Str…
wikidocs.net
프로젝트 중 스트림릿으로 데이터를 시각화하는데, 한 페이지에서 데이터를 떨궈두면 다른 페이지로 이동했을 때도 해당 데이터를 볼 수 있도록 만들고싶었다.
어떻게 만들어야하지 하다가, 문득 '아 세션 관리가 필요하구나...' 라는 생각이 들었고, 이참에 찾아서 정리해봤다.
브라우저 탭에서 Streamlit앱 접속은 세션으로 정의하는데, Streamlit서버에 연결하는 각 브라우저 탭마다 새로운 세션이 생성된다.
즉, Streamlit은 stateless하게 동작하기 때문에 User와의 상호작용이 발생할때마다 스크립트를 처음부터 다시 실행한다.
이를 방지하며 브라우저 탭에서 앱에 접속하는 각 인스턴스가 유지되도록 하기 위해서는 Session State를 도입해야한다.
Session State란 각 User 세션간에 변수를 공유하는 방법으로, 상태를 저장하고 유지하는 기능 외에도, 콜백을 사용하여 상태를 조작할 수 있는 기능도 제공한다.
st.session_state
이는 Streamlit 앱에서 Session State를 구현할 수 있도록 만들어준다.
나같은 경우, Session State를 아래와 같은 식으로 활용했다.
1. 세션에 데이터가 제대로 로드 되었는지 메인 모듈에서 확인
2. 다른 모듈에서 메서드들은 Session State와 별개로, Argument에 데이터 파일만 받도록 작성해두고, 아래와 같이 메인 모듈에서 세션에 데이터를 잘 로드만 시키면 메서드가 잘 동작할 수 있도록 구현.
간단히 말하면, 다른 모듈에는 메서드의 기능적인 구현만 잘 작성해두고, 메인 모듈에서는 페이지가 변경되는 상호작용이 발생할때마다 분기에 맞게 데이터만 잘 전달되도록 구현하였다.
'유틸리티' 카테고리의 다른 글
요즘 근황 & 중간 회고 & 앞으로 목표 (0) | 2025.03.04 |
---|---|
[오류 해결] GPU 있는데 torch.cuda.is_available()이 False를 반환할 때 (3) | 2024.11.06 |
[유틸리티] 부스트캠프 중간 회고 (0) | 2024.11.06 |
Flake8, Black, Isort를 활용한 Pre-commit(cf. Ruff, Makefile) (4) | 2024.11.05 |
[유틸리티] 10x 개발자가 되는 방법(원문 : How to be a 10x Software Engineer) (1) | 2024.11.04 |