GAE: second generation runtime 기능을 효과적으로 활용하면서 Python 3.7 웹 앱을 실행합니다.

조금 전에 Python 3.7이 GAE의 standard environment에서 사용할 수 있게 되었다고 발표되었습니다(2018/10/14 시점에서는 베타판). 또한 second generation runtime을 사용할 수 있습니다.

Introducing App Engine Second Generation runtimes and Python 3.7

본건에 관해서는, 이미 Qiita나 그 외의 블로그로 기사를 집필되어 있는 분도 계십니다. 그들을 보고, 내가 옛날에 쓴 앱(내부에서 pandas를 사용하고 있습니다)을 second generation 위에서 간단하게 움직일 수 있을까? 라고 생각해 시도한 것이 이 기사를 쓰려고 생각한 계기입니다.

second generation runtime 가 되어, 제약이 느슨해지거나 새롭게 할 수 있는 것이 증가하고 있습니다. 특히 내부적으로 C로 작성된 Python 라이브러리도 추가할 수 있게 된 것이 큽니다. 지금까지 움직일 수 없었던 어플도 움직일 수 있게 되어 있는 것 같아요.

second generation runtime 정보



우선, 싹둑 second generation runtime 의 개요를 설명합니다.

second generation 런타임에서는 gVisor 기반 컨테이너의 격리가 가능합니다. 따라서 first generation에 비해 제한이 느려집니다.
  • 모든 Python 패키지를 추가 가능
  • /tmp에 파일을 읽고 쓸 수 있습니다

  • 이 외에도 다양한 제한의 완화, 비추천이 된 기능 등이 있습니다. 자세한 내용은 공식 문서로 정리되어 있으므로 그쪽을 참조하십시오.

    Understanding differences between Python 2 and Python 3 on the App Engine standard environment

    웹 애플리케이션 정보



    이번에 GAE에 배포하는 것은 Excel 또는 CSV 파일의 테이블을 마크다운 형식으로 변환하는 웹 응용 프로그램입니다.



    second generation runtime 의 기능 중 도움이 되는 것은 다음의 2 점.

    타사 패키지 설치 가능

    이번에는 다음 패키지를 사용합니다. pandas와 같은 패키지도 포함되어 있습니다.
  • flask
  • flask-bootstrap
  • pandas
  • xlrd

  • /tmp에 파일 읽기/쓰기

    업로드한 파일은/tmp 영역에 임시로 내보내집니다.
    그것을 pandas의 read_csv 메소드로 읽고 있습니다.

    second generation runtime 설정 포인트



    그럼 실제로 second generation runtime 의 설정을 어떻게 할까. 요점만 내보냅니다.

    런타임 지정

    app.yaml 에서 런타임을 지정합니다. python37 합니다.

    app.yaml
    runtime: python37
    

    패키지

    requirements.txt에 필요한 패키지를 내보냅니다. 다음은 공식 문서의 예입니다 (내 앱은 버전을 고정하지 않았기 때문에 · · 본래는 pip freeze로 취득한 버전이어야합니다).
    Flask==0.10.1
    python-memcached==1.54
    

    배포



    이번 시도하는 웹 앱 소스는 Github에 게시됩니다. Cloud Shell에서 다음과 같이 명령을 실행합니다.
    # ソースの取得
    $ git clone https://github.com/ao-log/gae-second-generation-python-demo
    $ cd gae-second-generation-python-demo
    
    # デプロイ
    $ gcloud app deploy .
    

    https://[프로젝트 이름].appspot.com/으로 이동하여 배포되었는지 확인합니다.

    참고


  • Introducing App Engine Second Generation runtimes and Python 3.7
  • App Engine standard environment runtimes
  • Understanding differences between Python 2 and Python 3 on the App Engine standard environment
  • GAE 표준 환경에서 scikit-learn 사용
  • 좋은 웹페이지 즐겨찾기