Google App Engine에서 Google Cloud로 파일을 쓰려고하는데 백엔드를 사용하여 수많은 파일을 Google 클라우드 저장소에 쓰는 요청을 처리합니다. 하지만 그것은 약 5 분 (나는 다른 파일 크기를 시도 각 파일 등 30s 스레드를 잠을 시도하고 단지 시간이 일관된 것 같다)에 IOException을 얻을 것으로 보인다. IO Google 클라우드 저장소에 파일을 쓸 때 예외가 발생합니다.
그런 다음 다음 코드 테스트 : String testString = "1,1,1,1,1,1,1,1";
for (int i = 0; i < 200; i++) {
log.info("Dumping file " + i);
String fileName = "test/test" + i + ".csv";
FileService fs = FileServiceFactory.getFileService();
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
.setBucket(BUCKET_NAME)
.setKey(fileName)
.setAcl("public_read");
AppEngineFile writableFile = fs.createNewGSFile(optionsBuilder.build());
FileWriteChannel writeChannel = fs.openWriteChannel(writableFile, true);
PrintWriter out = new PrintWriter(Channels.newWriter(writeChannel, "UTF8"));
for (int j = 0; j < 10; j++) {
out.println(testString);
}
out.close();
writeChannel.closeFinally();
Thread.sleep(30000);
}
을 그리고 아래로 IOException가 얻을 : 구글 클라우드 스토리지 버킷에서
java.io.IOException
at com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:617)
at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:590)
at com.google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:498)
at com.google.appengine.api.files.FileServiceImpl.createNewGSFile(FileServiceImpl.java:153)
이 11 개 파일이 작성되며 (각 160가 좋다 바이트), 12 번째 파일 작성시 요청이 실패합니다. 내 실제 응용 프로그램의 경우 writeChannel.closeFinally()에서 실패합니다.
java.io.IOException
at com.google.appengine.api.files.FileServiceImpl.translateException(FileServiceImpl.java:617)
at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:590)
at com.google.appengine.api.files.FileServiceImpl.close(FileServiceImpl.java:551)
at com.google.appengine.api.files.FileServiceImpl.close(FileServiceImpl.java:441)
at com.google.appengine.api.files.FileWriteChannelImpl.closeFinally(FileWriteChannelImpl.java:81)
btw. 해당 버켓에 글을 쓰려면 내 GAE 애플리케이션의 Google 서비스 계정에 대한 모든 권한을 부여해야합니다.
대단히 감사합니다.
크기 제한은 10MB는 무엇입니까? Google Storage 또는 Blobstore에있는 파일의 크기 제한은 없습니다. –
@StuartLangley : 요청 당 한도는 [여기] (http://code.google.com/p/google-file-service/)로 지정됩니다. 나는 기본적으로 구글 클라우드 스토리지 Google 애플 리케이션 엔진에서 데이터를 전송하고 싶지만, 40MB의 데이터 (여러 덩어리로) 작성 후 IO 예외를 계속. 일부 오류 스택 추적으로 질문을 업데이트했습니다. 당신의 도움을 주셔서 감사합니다! –
10MB 제한이 없습니다 - 한 통화 당 32MB 제한이 있습니다. 앱이 양동이에 쓸 수 있도록 Google Storage 버킷에 애플리케이션 서비스 계정을 추가 했습니까? –