객체 지향 (OO)과 요청 처리의 개념을 구분할 것입니다. 무엇보다도 App Engine은 요청 기반 모델을 기반으로합니다. 요청은 App Engine에서 트리거되는 대부분의 작업에 대한 기반입니다.
두 번째로 App Engine 인프라에서 제공하는 App Engine 인스턴스 [0]과 App Engine 인프라에서 제공하는 App Engine 인스턴스 [0] 사이의 차이점에 유의해야합니다. 이는 webapp2.WSGIApplication [1]입니다. 정의한 클래스의 객체 인스턴스
일을 단순화하기 위해 앱에 1 개의 webapp2.WSGIApplication 만 있다고 가정합니다. 이제 응용 프로그램이 가져 오는 첫 번째 요청부터 시작해 보겠습니다. 그 전에는 App Engine 컴퓨터에서 사용할 수있는 코드와 구성을 제외하고는 앱이 존재하지 않습니다. 요청이 App Engine에 도달하면 새로운 App Engine 인스턴스 [0]이 생성됩니다. App Engine 인스턴스가 설치되고 설정되면 webapp2.WSGIApplication 인스턴스 [1]가 인스턴스화됩니다. 이제는 관련 "인스턴스"를 둘 다 가지고 있으며 객체는 컨테이너의 일부입니다. 그런 다음 들어오는 요청은 수행 한 구현에 따라 요청을 처리 할 webapp2.WSGIApplication 인스턴스로 라우팅됩니다.
App Engine 시스템은 부하에 따라 새로운 App Engine 인스턴스를 생성합니다. 단일 인스턴스가 들어오는 모든 요청을 처리 할 수없는 경우 새 인스턴스가 만들어지고 (처음에는 [0], 그 다음에는 [1])로드가 분산됩니다. 그래도 충분하지 않으면 세 번째 인스턴스가 만들어집니다. 부하가 감소하면 마찬가지입니다. 응용 프로그램이 현재 3 개의 인스턴스에서 실행 중이지만 2 개만로드를 처리 할 수 있으면 1 개의 인스턴스가 종료됩니다. 또한 특정 인스턴스가 어떤 요청을 처리 할지도 알지 못합니다.
그러면 인스턴스 변수에 의존해야하는 두 번째 질문이 생깁니다. App Engine은 인스턴스가 적절하게 생성되고 종료되기 때문에 어떤 인스턴스가 요청을 처리하는지 알지 못하기 때문에 항상 인스턴스가 비 상태라고 가정해야합니다. 항상 그런 것은 아니지만 잠재적으로 모든 요청은 완전히 새로운 인스턴스에 의해 처리 될 수 있습니다.
상태가 필요한 경우 memcache (휘발성) 또는 데이터 저장소 (영구) 또는 다른 데이터 백엔드 (blobstore, 파일 API 등)를 사용하십시오.
[0] https://developers.google.com/appengine/docs/adminconsole/instances
[1] http://webapp-improved.appspot.com/guide/app.html
PS : 사람들이 고급 기술을 고려해야 앱 엔진에 대해 배울 시작 요청하지만, 초보자를 최적화하기 위해 인스턴스 메모리를 사용합니까.
안녕하세요 schuppe. 나는 당신의 대답에 대해 당신에게 결코 감사함을 느끼지 못했습니다. 감사합니다. 그것은 제 질문에 대한 매우 명확하고 간결한 대답이었습니다. –
다행스럽게도 :) – schuppe