2013-02-16 3 views
0

저는 Google 애플리케이션 엔진과 Python에 새로운 경험이 있습니다. 응용 프로그램을 성공적으로 업로드 한 후에 나는 기본적인 질문을 고집합니다.python의 Google 애플리케이션 엔진 애플리케이션 아키텍처

app = webapp2.WSGIApplication([ 
    ('/.*',IndexHandler) 
], debug=True) 

이것은 일반적으로 요청을 처리하는 클래스와 매핑하는 데 사용되는 코드 블록입니다. 그러나 app.yaml에는 개별 URL에 대한 처리기를 지정할 수있는 섹션이 있습니다.

제 질문은 Google 애플 리케이션 엔진에서 파이썬 응용 프로그램의 올바른 아키텍처는 무엇입니까 무엇입니까. 애플리케이션에 서로 다른 요청을 처리하는 데 필요한 수백 가지 클래스가있는 경우이 코드에서이 모든 것을 지정해야합니까?

나는 봤지만 만족스러운 답변을 찾을 수 없었다. 좋은 튜토리얼이나 문서에 링크하면 큰 도움이 될 것입니다.

답변

2

기본적으로 app.yaml에서 사용할 앱을 정의합니다. 예를 들어 여러 개의 앱이있는 경우 여기에서 사용할 앱을 지정할 수 있습니다.

예, 허용 된 모든 URL을 여기에 지정해야합니다 (main.py). 그렇지 않으면 요청에 404가 표시됩니다. 그러나 정규식을 사용하여 특정 유형의 주소를 지정된 핸들러와 일치시킬 수 있습니다. 튜토리얼 밖으로

확인 : URI 라우팅 https://developers.google.com/appengine/docs/python/gettingstartedpython27/usingwebapp

문서 :

1) 당신은 요청과 URI 라우팅을 처리하기 위해 webapp2 라우팅을 사용할 수 있습니다 http://webapp-improved.appspot.com/guide/routing.html?highlight=url

0

app.yaml은 개인적으로 사용하지 않지만 보안 및 로그인 옵션과 같은 설정에 사용할 수 있습니다.
나는 main.py를 사용하여 모든 URL을 오른쪽 핸들러에 매핑합니다.

1

이렇게 할 수 있습니다. 당신이 http://your-appid.com/service/user에 액세스하려고 service.py

url_map = [ 
    ('.*/user.*', 'service.UserHandler'), 
    ('.*/data/show/', 'appname.service.DataShowHandler'), 
    ('.*/data.*', 'appname.service.DataHandler'), 
] 

app = webapp2.WSGIApplication(url_map) 

에서 애플리케이션 제목을

- url: /service/.* 
    script: service.app 

- url: .* 
    script: main.app 

에서

, service.py에 UserHandler 클래스의 GET 기능을 excecute됩니다에서 appengine에 위치한 루트 폴더.

http://your-appid.com/service/data/show에 액세스하려고 시도하면 appengine은 root/appname 폴더에있는 service.py의 DataShowHandler 클래스의 GET 기능을 종료합니다.

+0

답변으로 파이썬 앱의 동작을 이해하는 데 도움이되었습니다. 매우 도움이되었습니다. –

1

나는 두 anwers 있습니다. 이것은 매우 강력합니다. URL 템플릿을 사용하거나 사용자 정의 디스패처를 작성할 수 있습니다.

2) 많은 요청에 대해 단일 URL을 사용하고 세션/상태를 사용하여 게시물 이후에 계속하는 방법을 찾을 수 있습니다. 즉, 요청마다 요청 처리기를 사용할 필요가 없습니다.

+0

고맙습니다. 매우 유용했습니다. –

관련 문제