2011-12-29 2 views
1

PiCloud REST API를 사용하여 Google Appengine (GAE)에서 백그라운드 작업을 실행하고 있습니다. 다음과 같이 내 PiCloud 기능은 GAE에 대한 바이트 문자열을 반환PiCloud에서 Google Appengine으로 blob (바이타 스트링)을 반환하려면 어떻게해야합니까?

결과 = numpy.asarray (편곡, numpy.float32)로 .toString()
반환 pickle.dumps (bz2.compress (결과))

이것은 "result"문자열이 클 때 (24MB가 일반적인 값일 때), bz2 압축을 사용하더라도 리턴 된 blob을 GAE URLfetch 응답의 32MB 제한을 초과하는 크기로 날려 버리는 것을 제외하고는 정상적으로 작동합니다. json.dumps()를 사용해 보았지만 작동하지 않습니다. 그것을 확장하지 않는 얼룩을 반환하는 방법이 있습니까?

+0

REST API 설명서를 더 자세히 읽어야합니다. 해결책은 out_encoding = 'raw'로 PiCloud 함수를 게시하는 것입니다. cloud.files.publish (function, 'function', out_encoding = 'raw') 결과는 JSON 헤더가없는 문자열로 반환됩니다. 콘텐츠 형식 : application/octet-stream – MortCanty

답변

0

별도의 요청으로 분류 할 수있는 방법을 찾아야 할 것 같습니다. 이 문제는 PiCloud만큼 그리 크지 않습니다. 단순히 GAE의 하드 한계가 있습니다.

cloud.files을 사용하여 파일을 서버에 저장할 수 있습니다. 그런 다음 청크로 검색하십시오.

+0

감사합니다. Ken. GAE의 32MB URLFfetch 응답 할당량은 정상입니다. 내 문제는 바이너리 데이터를 보내는 방법이었고 위의 files.publish()에 대한 out_encoding 키워드를 간과했다. – MortCanty