Python 3 런타임을 위한 구성 파일 준비

App Engine 표준 환경의 Python 3 런타임에서 앱을 실행하려면 App Engine에서 사용하는 구성 파일의 일부를 변경해야 할 수도 있습니다.

  • app.yaml. 이 파일에는 런타임 및 앱 핸들러와 같은 앱 코드에 대한 정보가 포함되어 있습니다.

  • appengine_config.py. Python 2 런타임은 이 파일을 사용하여 타사 라이브러리에 액세스하고 상수 및 '후크 함수'에 대한 값을 제공합니다. Python 3 런타임은 이 파일을 사용하지 않습니다.

app.yaml 업데이트 중

app.yaml 구성 파일의 일부 필드 동작이 수정되었습니다. 다음 표에 설명된 대로 지원 중단된 필드를 삭제하고 다른 필드를 업데이트합니다.

필드 유형 변경 설명
app_engine_apis Python 3에만 적용 가능 Python 3용 기존 번들 서비스에 액세스하려면 true로 설정해야 합니다.
api_version
application_readable
builtins
지원 중단됨 Python 3 런타임에서는 더 이상 사용되지 않습니다.
threadsafe 지원 중단됨 모든 애플리케이션이 스레드 안전으로 간주됩니다. 애플리케이션이 스레드 안전이 아닌 경우 작업자당 1개의 스레드를 구성하는 entrypoint를 지정합니다.

예를 들어 F4 인스턴스 클래스를 사용하는 경우
entrypoint: gunicorn -b :$PORT -w 8 --threads 1 main:app

entrypoint 권장사항에서 각 인스턴스 클래스의 권장 작업자 수를 참조하세요.
libraries 지원 중단됨 requirements.txt 파일을 사용하여 종속 항목을 선언하고 클라이언트 라이브러리를 설치합니다.
handlers: login app_engine_apistrue인 경우 지원됨 Python 3용 기존 번들 서비스를 사용하지 않는 경우 사용자 관리에 Identity and Access Management(IAM)를 사용합니다.
handlers: script 수정됨 Python 2 런타임에서 script 필드를 사용하여 수신 요청을 앱의 스크립트로 라우팅합니다.

Python 3 런타임에서는 script 필드를 사용하는 대신 인앱 라우팅(예: Flask 또는 Django)이 포함된 웹 프레임워크를 사용해야 합니다.

app.yaml 파일을 Python 3 런타임으로 마이그레이션하려면 파일에 정적 핸들러와 스크립트 핸들러가 있는지 여부에 따라 다음 중 하나를 수행합니다.

  • app.yaml 파일에 정적 핸들러가 포함된 경우 다음 중 하나를 수행하여 동적 콘텐츠 요청이 앱의 스크립트로 라우팅되도록 합니다.
    • 모든 script 필드를 삭제합니다. 그런 다음 entrypoint 필드를 추가하여 앱을 실행하는 웹 서버를 시작합니다. 정적 핸들러와 일치하지 않는 요청은 entrypoint 필드에 지정된 웹 서버로 전달됩니다. 웹 서버와 앱의 웹 프레임워크는 요청을 올바른 스크립트로 라우팅하는 역할을 합니다.
    • 모든 script 필드의 값을 auto로 바꿉니다. App Engine은 웹 서버에서 앱을 자동으로 실행하며 스크립트 핸들러와 일치하는 모든 요청은 웹 서버로 전달됩니다(앱이몇 가지 요구사항을 충족할 경우). 웹 서버와 앱의 웹 프레임워크는 요청을 올바른 스크립트로 라우팅하는 역할을 합니다.
    • app.yaml 파일에 정적 핸들러가 포함되어 있지 않은 경우 모든 script 필드를 삭제하세요. 앱에 대한 모든 요청은 앱의 웹 서버로 전달되며 앱의 프레임워크는 요청을 올바른 스크립트로 라우팅합니다. 필요에 따라 entrypoint 필드를 추가하여 기본 시작 동작을 맞춤설정할 수 있습니다. app.yaml에 두 가지 유형의 핸들러가 모두 있는 경우에 정적 핸들러와 아래 예시의 관리자 전용 핸들러와 같이 다른 지시어가 필요한 auto 핸들러를 제외하고 auto를 표시하는 모든 스크립트 핸들러를 삭제할 수 있습니다.

정적 파일 처리는 변경되지 않습니다.

지원 중단된 필드를 사용하면 앱을 배포할 때 App Engine은 오류를 반환합니다.

다음 예를 사용하여 app.yaml 파일 간의 차이점을 비교할 수 있습니다.

Python 2

runtime: python27
api_version: 1
threadsafe: true

handlers:
- url: /
  script: home.app

- url: /index\.html
  script: home.app

- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: admin.app
  login: admin

- url: /.*
  script: not_found.app

Python 3

runtime: python312
app_engine_apis: true

handlers:
- url: /stylesheets
  static_dir: stylesheets

- url: /(.*\.(gif|png|jpg))$
  static_files: static/\1
  upload: static/.*\.(gif|png|jpg)$

- url: /admin/.*
  script: auto
  login: admin

appengine_config.py 삭제

App Engine 표준 환경의 Python 2 런타임은 appengine_config.py 파일을 사용합니다.

이 파일은 Python 3 런타임에서 무시됩니다. 대신 Python 3 런타임은 네이티브 코드를 사용하는 종속 항목을 포함하여 종속 항목을 설치하기 위해 표준 requirements.txt 파일을 사용합니다.