AWS Android SDK连接超时和重试
我一直在使用AWS android sdk处理android应用程序中S3上的文件。用户面临一些问题,其中很少涉及连接超时。在我的应用程序中设置AWS Android SDK连接超时和重试,android,amazon-web-services,amazon-s3,android-external-storage,Android,Amazon Web Services,Amazon S3,Android External Storage,我一直在使用AWS android sdk处理android应用程序中S3上的文件。用户面临一些问题,其中很少涉及连接超时。在我的应用程序中设置AmazonS3客户端时,我使用以下代码设置超时和重试次数: ClientConfiguration clientConfiguration = new ClientConfiguration(); clientConfiguration.setMaxErrorRetry(4); clientConfiguration.setConnectionTime
AmazonS3
客户端时,我使用以下代码设置超时和重试次数:
ClientConfiguration clientConfiguration = new ClientConfiguration();
clientConfiguration.setMaxErrorRetry(4);
clientConfiguration.setConnectionTimeout(10000); // default is 10 secs
clientConfiguration.setSocketTimeout(15000); // default is 50 secs
无论我读到哪里,它都说maxrerrretry
只对失败的可重试请求进行重试。与连接超时和套接字连接超时相关的错误是否也属于此类别?如果没有,该案例的解决方案是什么?我已经找了很长时间了,但没有得到任何明确的答案
另外,我在TransferListener
回调中遇到了两个特定的异常。有:
无法将对象内容存储到磁盘:读取超时(面临AWS异常的所有用户中有14%面临此异常)
无法将对象内容存储到磁盘:超时(面临AWS异常的所有用户中有17.4%面临此异常)
以上两项对我们来说是最痛苦的。我一直认为,发生这种情况是因为用户设备上没有更多的存储空间。我一直在使用外部存储器中特定于应用程序的目录来存储文件,现在考虑将这些文件移动到缓存中,以便在设备上没有剩余空间时,系统处理文件的清理。假设用户设备上的空间不足,您认为这是一个好的解决方案吗。
发生上述存储相关异常的其他可能性有哪些?此错误发生在SDK中的三个位置,其中两个位置是重要的,适用于此处
(一)
(二)
我怀疑是在(2)中抛出了您案例中的异常。出现这种情况可能有多种原因,存储不可用只是其中之一
(1) S3对象不存在或S3 bucket/对象没有所需的权限。如果您具有用户访问内容所需的权限,请在AWS S3控制台上进行检查。
(2) 下载过程中可能会出现网络中断。检查整个传输过程中是否有适当的网络
检查AWS CloudWatch日志,查看日志中是否有任何故障。感谢您的回复。S3 bucket对象确实具有所需的权限。该应用程序正在生产中,只有一小部分用户例外。如果问题仍然存在,你能创建一个论坛帖子/GitHub问题,并提供堆栈跟踪和更多关于重现问题的详细信息吗?