2011-08-27 2 views
1

GAE SDK 1.5.4에서는 blobstoreuploadhandler가 리다이렉트를 반환해야하고 프로덕션에서는 처리기가 템플릿 변수가있는 템플릿에 대해 "일반"응답을 할 수 있도록 이미 필요하다는 요구 사항이 제거되었습니다. dev_appserver에이 기능이 필요하므로 dev_appserver를 수정하여 템플릿 변수로 템플릿을 렌더링하는 핸들러를 허용 할 수 있는지 물어보십시오. 변경해야 할 코드가 파일에 있다고 가정합니다. http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/tools/dev_appserver_blobstore.py 하지만 수정해야 할 부분이 없습니다. 핸들러를 정기적으로 응답 할 수있게 만드는 방법을 알려주시겠습니까?상태 200을 승인하도록 blobstoreuploadhandler를 수정하는 방법은 무엇입니까?

def EndRedirect(self, redirected_outfile, original_outfile): 
     """Handle the end of upload complete notification. 

     Makes sure the application upload handler returned an appropriate status 
     code. 
     """ 
     response = dev_appserver.RewriteResponse(redirected_outfile) 
     logging.info('Upload handler returned %d', response.status_code) 

     if (response.status_code in (301, 302, 303) and 
      (not response.body or len(response.body.read()) == 0)): 
     contentless_outfile = cStringIO.StringIO() 


     contentless_outfile.write('Status: %s\n' % response.status_code) 
     contentless_outfile.write(''.join(response.headers.headers)) 
     contentless_outfile.seek(0) 
     dev_appserver.URLDispatcher.EndRedirect(self, 
               contentless_outfile, 
               original_outfile) 
     else: 
     logging.error(
      'Invalid upload handler response. Only 301, 302 and 303 ' 
      'statuses are permitted and it may not have a content body.') 
     original_outfile.write('Status: 500\n\n') 

업데이트 :이 솔루션은이 링크 https://groups.google.com/forum/#!topic/google-appengine-python/vnvhUG1-UN0

+0

은 그냥 1.5.4 기다리거나 할 수 없습니다 당분간 생산 테스트를 해보시겠습니까? –

+0

'(301, 302, 303)'리스트에 200을 추가하려고 했습니까? – cope360

+0

답장을 보내 주셔서 감사합니다. 예, 기다릴 수 있습니다. 네, 목록에 200을 추가하려고 시도했는데 그렇게하지 않았을 수도 있습니다. 아마도 사소하지 않고 대신 자신의 코드를 작업하고 업그레이드 할 방법의 두 가지 버전을 유지하는 것이 더 좋았을 것입니다. (그것은 지저분한 클래스였습니다. codereview.stack에서 도움을 얻고 있습니다 ...) 1.5.4를 기다리거나 프로덕션에서 테스트 할 수 있습니다. –

답변

0

에 게시 된 솔루션은 게시했습니다 나는이 일을 확인 수 :

def EndRedirect(self, dispatched_output, original_output): 

"""Handle the end of upload complete notification. Makes sure the application upload handler returned an appropriate status code. """ 

    response = dev_appserver.RewriteResponse(dispatched_output) 

    logging.info('Upload handler returned %d', response.status_code) 
    outfile = cStringIO.StringIO() 
    outfile.write('Status: %s\n' % response.status_code) 

    if response.body and len(response.body.read()) > 0: 
     response.body.seek(0) 
     outfile.write(response.body.read()) 
    else: 
     outfile.write(''.join(response.headers.headers)) 

    outfile.seek(0) 

dev_appserver.URLDispatcher.EndRedirect(self,outfile,original_output) 
관련 문제