2012-10-21 5 views
0

최대 another question I asked의 후속 조치로 WebApp2 Python 서버에서 json 데이터를 제공하는 가장 쉬운 방법에 대한 기본적인 질문이 있습니다. large (약 100kb)는 클라이언트에 채널 API 메시지로 전송합니다.채널 API 메시지를 수신 한 후 클라이언트가 데이터를 가져올 수 있도록 Webapp2 요청 처리기를 작성하는 방법

webapp2 서버는 클라이언트 요청을 기반으로 몇 분 동안 여러 데이터 파일을 생성합니다. 데이터가 준비되면 채널 API로 클라이언트에 URL로 메시지를 보내고 싶습니다. GWT 앱)은 http GET 요청을 수행하여 데이터를 가져올 수 있습니다. 각 데이터 파일은 클라이언트에 고유하므로 서버는 클라이언트에 적절한 데이터 파일을 제공하는 요청 처리기를 가져야합니다.

요청이 호출 될 때 특정 클라이언트에 대한 다른 요청 처리기에서 올바른 데이터 파일을 직접 제공 할 수있는 요청 처리기를 작성할 수 있습니까? 아니면 클라이언트가 요청할 때까지 먼저 Cloud SQL 또는 데이터 저장소를 사용하여 데이터를 저장해야합니까? 당신은 Blob 저장소에 파일을 작성하고 Blob 저장소에서 해당 파일을 제공 할 수

class MainPage(webapp2.RequestHandler): 
def get(self): 
    ## This opens the GWT app  

class Service_handler(webapp2.RequestHandler): 
def get(self, parameters): 
    ## This is called by the GWT app and generates the data to be 
    ## sent to the client. 
    ## A channel API message is sent to the client with the url 
    ## for each data file generated. 

class kml_handler(webapp2.RequestHandler): 
def get(self, client_id): 
    ## I would like to return the correct data here when it is 
    ## called by the client. Do I need to store the data in 
    ## Cloud SQL or the Data Store and then retrieve it 
    ## or can this handler take the results directly from the 
    ## Service_handler as soon as it is generated? 

app = webapp2.WSGIApplication([ 
          webapp2.Route(r'/', handler=MainPage), 
          webapp2.Route(r'/Service/', handler=Service_handler), 
          webapp2.Route(r'/_ah/channel/<connected>/', handler = connection_handler), 
          webapp2.Route(r'/kml/<client_id>', handler = kml_handler) 
          ], 
          debug=True) 

답변

1

: 여기에 내가하고 싶은 것이 몇 가지 불완전한 샘플 코드입니다. https://developers.google.com/appengine/docs/python/blobstore/overview#Complete_Sample_App

+0

감사 : 여기

은 예입니다. blobstore를 사용하는 것이 최상의 솔루션 인 것처럼 보입니다. 그러나 지금은 데이터 저장소의 여러 레코드에 긴 텍스트 데이터를 쓰고 HTTP 요청에 대한 응답으로 쿼리 할 때 함께 다시 결합하는 것이 더 간단합니다 (작동 함). 결국 BLOBSTORE 사용으로 전환 할 것입니다. – dave

+0

또한 데이터 저장소 db.Text 속성을 사용하여 json 문자열을 저장할 수 있으며 NDB에는 json 속성을 사용하여 json 객체를 저장할 수 있습니다. NDB는로드 및 덤프를 처리합니다. – voscausa