최대 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)
감사 : 여기
은 예입니다. blobstore를 사용하는 것이 최상의 솔루션 인 것처럼 보입니다. 그러나 지금은 데이터 저장소의 여러 레코드에 긴 텍스트 데이터를 쓰고 HTTP 요청에 대한 응답으로 쿼리 할 때 함께 다시 결합하는 것이 더 간단합니다 (작동 함). 결국 BLOBSTORE 사용으로 전환 할 것입니다. – dave또한 데이터 저장소 db.Text 속성을 사용하여 json 문자열을 저장할 수 있으며 NDB에는 json 속성을 사용하여 json 객체를 저장할 수 있습니다. NDB는로드 및 덤프를 처리합니다. – voscausa