AppEngine Java:API调用file.Create()花了太长时间才响应并被取消

我们在尝试将文件写入Blobstore时会遇到此exception。 它通常出现一两分钟,然后一切恢复正常。 它已在http://code.google.com/p/googleappengine/issues/detail?id=5723上报告,但已标记为已关闭。

你们经历过这样的事吗?

完整的堆栈跟踪是:

com.google.apphosting.api.ApiProxy$ApiDeadlineExceededException: The API call file.Create() took too long to respond and was cancelled. at java.lang.Thread.getStackTrace(Thread.java:1495) at com.google.apphosting.runtime.ApiProxyImpl.doSyncCall(ApiProxyImpl.java:218) at com.google.apphosting.runtime.ApiProxyImpl.access$000(ApiProxyImpl.java:67) at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:163) at com.google.apphosting.runtime.ApiProxyImpl$1.run(ApiProxyImpl.java:161) at java.security.AccessController.doPrivileged(Native Method) at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:161) at com.google.apphosting.runtime.ApiProxyImpl.makeSyncCall(ApiProxyImpl.java:67) at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:101) at com.google.apphosting.api.ApiProxy.makeSyncCall(ApiProxy.java:50) at com.google.appengine.api.files.FileServiceImpl.makeSyncCall(FileServiceImpl.java:557) at com.google.appengine.api.files.FileServiceImpl.create(FileServiceImpl.java:479) at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:99) at com.google.appengine.api.files.FileServiceImpl.createNewBlobFile(FileServiceImpl.java:81) at ar.com.zupcat.lib.util.BlogstoreUtil.saveToBlogstoreImpl(BlogstoreUtil.java:69) 

谢谢!

DeadlineExceededExceptions总是可能偶尔发生。

您应该始终编写代码来处理这些类型的瞬态错误,最可能的方法是在可能的情况下在短暂延迟后重试请求。

值得指出的是,文件API仍然是实验性的,我们会继续改进它的性能和可靠性 – 但你仍然应该在防御性方面进行编码。