2025/09/25 Flask-4

김기훈·2025년 9월 25일

TIL

목록 보기
26/194

Websocket vs HTTP

Websocket

  • 장점
    • 클라이언트와 서버 양방향 통신 가능
    • 한번만 연결하면 유지
    • 실시간 서비스에 최적화
    • ws:// 또는 wss:// (보안) 방식 활용
  • Websocket이 필요한 이유 = HTTP 방식의 문제점
    • 풀링(Pulling)과 긴 연결(Long Polling)의 한계
      • 풀링: 클라이언트가 일정 시간마다 서버에 요청 (과부하 문제)
      • 긴 연결: 클라이언트가 연결을 유지하며 서버 응답을 기다림 (비효율적)

WebSocket 프로토콜 구조

  • Handshake
    • HTTP 요청을 통해 WebSocket 연결 수립 (Upgrade: websocket 헤더 사용)
  • 메시지 송수신 (Message Exchange)
    • 텍스트 또는 바이너리 메시지 교환
  • 연결 종료 (Connection Close)
    • 클라이언트 또는 서버가 연결 종료

실습

실습 1 : Flask에서 WebSocket 서버 구현하기

실습 2 : 실시간 알림 서비스

실습 3 : 실시간 타이핑

실습 4 : 실시간 감정 분석

  • 입력하면 서버가 텍스트 내용을 분석해 감정판별

실습 5 : 실시간 비트코인 가격 확인


VOD

Flask-migrate

  • Alembic을 통해 SQLAlchemy 모델의 변경사항을 추적
    • Alembic : Python으로 SQLAlchemy를 사용하고 있을때 데이터베이스를 관리해주는 마이그레이션 도구
  • 데이터베이스 마이그레이션을 효과적으로 관리
    • 데이터베이스 스키마 변경사항(예: 새로운 테이블 추가, 컬럼 변경, 인덱스 추가 등)이 있을 때마다 마이그레이션 파일을 생성하여 이러한 변경사항을 코드로 관리
    • 마이그레이션 파일들은 버전 컨트롤 시스템에 추가되어 데이터베이스 스키마의 변경 이력을 기록하는 데 사용
  • 변경사항에 따라 데이터베이스 스키마를 자동으로 업그레이드 또는 다운그레이드(이전으로 되돌리기)가 가능

초기 설정

  • flask db init : 처음 설정할 때 한 번만 수행 마이그레이션을 관리할 수 있는 migration 디렉토리 생성
  • from flask_migrate import Migrate / migrate = Migrate(app, db)
    • Migrate 객체를 생성하고 Flask 애플리케이션 및 SQLAlchemy 데이터베이스 인스턴스와 연결

마이그레이션 명령어

  • flask db migrate -m "migration message"
    • 데이터베이스 마이그레이션을 생성하는 역할
    • 모델의 변경사항이 있을 때마다 새로운 마이그레이션을 생성하여야 함
  • flask db upgrade
    • 생성된 마이그레이션 스크립트를 실행하여 실제 데이터베이스를 업그레이드
      • migrations/versions 디렉토리에 있는 마이그레이션 스크립트가 실행
      • 이 스크립트는 SQLAlchemy를 사용하여 데이터베이스의 스키마를 변경하고 모델의 변경 사항을 적용
  • flask db downgrade
    • 이전 마이그레이션 상태로 데이터베이스를 되돌림

마이그레이션 실습


내용 추가

profile
안녕하세요.

0개의 댓글