배포된 Streamlit 앱 편집하기

Snowsight 에 Streamlit 앱을 배포한 후 Snowsight 또는 SQL 명령을 사용하여 앱 코드와 종속성을 모두 편집할 수 있습니다. 변경 사항이 적용되는 방식은 런타임 환경과 앱이 생성된 방식에 따라 다릅니다.

참고

ROOT_LOCATION 매개 변수(레거시 앱)로 생성된 앱은 편집 기능이 제한되므로 전체 기능을 위해 FROM 매개 변수를 사용하도록 변환해야 합니다. 자세한 내용은 다양한 유형의 Streamlit 오브젝트 이해하기 섹션을 참조하십시오.

이 페이지에서는 FROM 매개 변수로 만든 앱만 다룹니다.

Container Runtime 및 Warehouse Runtime 환경은 모두 여러 사용자가 동시에 동일한 앱을 편집할 때 가능한 경합 조건의 대상이 됩니다. 자세한 내용과 모범 사례는 아래 공동 편집 고려 사항 섹션을 참조하세요.

메서드 편집하기

Snowsight 에서 브라우저 내 편집기를 통해 앱을 편집하거나 SQL 명령을 사용하여 파일을 업로드할 수 있습니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 Projects » :ui:`Streamlit`을 선택한 다음 Streamlit 앱을 선택합니다.

  3. 오른쪽 위 모서리에서 Edit 을 선택합니다.

  4. 파일 탐색기에서 편집할 새 파일을 선택하거나 만듭니다.

    • 기존 파일을 편집하려면 파일 탐색기에서 파일을 선택합니다.

    • 새 파일을 만들려면 :ui:`+`(추가) » :ui:`Create new file`을 선택하고 파일 이름을 입력한 후 :ui:`Create`를 선택합니다. ``subdir/new_file.py``와 같이 파일 이름에 하위 디렉터리를 포함할 수 있습니다.

    • 로컬 컴퓨터에서 파일을 업로드하려면 :ui:`+`(추가) » :ui:`Upload file`를 선택하고, 업로드할 파일을 선택하고, 필요한 경우 파일 이름과 경로를 수정한 후 :ui:`Upload`를 선택합니다.

  5. 편집기 창에서 변경을 수행합니다.

    변경 사항은 몇 초 후에 앱의 소스 위치에 자동으로 저장됩니다.

  6. 선택 사항: 개인 키가 암호화된 경우 암호 구문을 설정하려면 개인 키 암호 구문에 대한 환경 변수를 설정합니다. Run 을 선택합니다.

    변경 사항이 저장될 때까지 몇 초를 기다리지 않으려면 :ui:`Run`을 선택하여 변경 사항을 즉시 복사하면 됩니다.

  7. 앱에서 Warehouse Runtime을 사용하는 경우 뷰어는 :ui:`Run`을 실행하여 변경 사항을 앱 인스턴스에 복사합니다. 앱이 Container Runtime을 사용하는 경우 변경 사항은 라이브 앱의 소스에 직접 저장되며 다음에 앱과 상호 작용할 때 모든 뷰어에게 표시됩니다.

런타임 동작 차이점

편집 내용이 적용되는 방식은 앱의 런타임 유형에 따라 다릅니다.

Container Runtime

Container Runtime 앱을 편집하는 경우 다음과 같습니다.

  • 앱 소스에 대한 변경 사항은 라이브 앱에 직접 적용됩니다.

  • 현재 뷰어는 다음에 앱과 상호 작용하고 재실행을 트리거할 때 업데이트를 볼 수 있습니다. (Streamlit `구성 옵션<https://docs.streamlit.io/develop/api-reference/configuration/config.toml#server>`_``server.runOnSave``은 기본적으로 비활성화되어 있습니다.)

  • Run 버튼은 뷰어가 사용할 수 있지만, 현재 보기 또는 편집 세션에 변경 사항을 전파하는 데는 필요하지 않습니다.

  • 모든 사용자는 즉시 변경되는 동일한 앱 인스턴스를 볼 수 있습니다.

라이브 앱이 뷰어 간에 공유되더라도 Snowsight 편집기의 소스 코드 뷰는 공유되지 않습니다. 따라서 Container Runtime의 앱은 여러 사용자가 동시에 앱을 편집할 때 여전히 경합 조건의 영향을 받습니다. 자세한 내용과 모범 사례는 아래 공동 편집 고려 사항 섹션을 참조하세요.

Warehouse Runtime

Warehouse Runtime 앱을 편집하는 경우 다음과 같습니다.

  • 각 뷰어의 인스턴스가 시작될 때 앱 소스 코드가 복사됩니다.

  • 현재 뷰어는 세션 중에 소스에 대한 업데이트를 복사하려면 :ui:`Run`을 선택해야 합니다.

  • 편집하는 사용자도 :ui:`Run`을 클릭하여 미리 보기 창에서 변경 사항을 확인합니다.

  • 각 뷰어는 자체적으로 격리된 앱 인스턴스를 가져옵니다.

공동 편집 고려 사항

여러 사용자가 동일한 앱을 편집하는 경우 충돌 가능성에 유의하세요. 두 명 이상의 사용자가 동시에 앱을 편집하는 경우 Container Runtime 및 Warehouse Runtime 앱 모두 다음과 같은 경합 조건이 적용됩니다.

경합 조건

Snowsight 편집기는 다음과 같이 작동합니다.

  • 현재 소스 코드는 편집기 창을 열거나 파일 탐색기를 사용하여 파일을 열 때 편집기 창에 복사됩니다.

  • 편집기 창에서 파일을 보는 경우 다른 사용자가 파일을 변경해도 파일이 자동으로 업데이트되지 않습니다.

  • 편집기 창에서 변경 사항을 적용하면 편집기를 연 후 다른 사용자가 변경한 내용이 자동 저장으로 덮어쓰입니다.

  • 충돌하는 편집 내용은 자동으로 병합되지 않습니다.

예를 들어, 다음 시퀀스로 인해 변경 사항이 손실될 수 있습니다.

  1. 개발자 A가 2:00 PM에 편집기를 엽니다.

  2. 개발자 B가 2:15 PM에 변경 작업을 수행하고 저장합니다.

  3. 개발자 A가 2:30 PM에 변경 사항을 저장합니다.

  4. 개발자 B의 변경 사항이 손실됩니다(개발자 A가 덮어씀).

팀 편집 모범 사례

팀과 함께 작업할 때 충돌을 방지하려면 다음을 수행합니다.

  • 편집하기 전에 팀 구성원과 소통합니다.

  • 소스 파일을 Git 리포지토리에 보관하고 해당 리포지토리에서 코드를 배포합니다.

  • 변경 사항을 테스트하려면 별도의 개발 앱을 사용합니다.

  • Snowsight 편집기를 다시 로드하여 변경하기 직전에 최신 버전을 다운로드합니다.