我可以从 aws s3 恢复下载吗?

2024-01-28

我正在使用 python boto3 库通过蜂窝连接将文件从 s3 下载到物联网设备,该连接通常缓慢且不稳定。

有些文件非常大(250Mb,对于这种情况来说很大),并且在下载时网络出现故障并且设备重新启动。

我想从设备重新启动时结束的位置恢复下载。有什么办法可以做到吗?

中止的下载似乎在下载时将下载的数据保留在临时文件中,因此数据就在那里。

目标是节省数据传输并使下载更具弹性。

我正在使用分段上传,但不会自动恢复。

我正在做的是这样的:

s3 = boto.resource('s3')
session = boto.session.Session(region_name='eu-central-1', profile_name=profile)
s3client = session.client( 's3', config=boto.session.Config(signature_version='s3v4'))
MB = 1024 ** 2

config = TransferConfig(
    multipart_threshold=10*MB,
    num_download_attempts=100)

def upload():
    s3client.upload_file(Filename=localfile, Bucket=bucket, Key=key, Config=config)

def download():
    s3client.download_file(bucket, key, localfile, Config=config )

# upload from server...
upload()

# .... later, from IOT device
download()

我不相信boto3有断点续传的功能。

您可以通过使用范围获取来自己实现一个。使用预先查找对象的大小头对象 https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.head_object,然后将其分成 N 个范围,单独下载它们(可能并行下载 K 个块,具体取决于您的硬件),将它们作为块存储在本地文件系统上,并在所有块完成后将它们重新组合到最终下载中。

response = client.get_object(
    Bucket='mybucket',
    Key='mykey',
    Range='bytes=10001-20000'
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以从 aws s3 恢复下载吗? 的相关文章

随机推荐

  • 如何用c风格的注释解析json文件?

    我有一个json文件 如下所示 author John desc If it is important to decode all valid JSON correctly and speed isn t as important you
  • 无法使用 libxml2 和 xpath 获取节点

    我有以下代码来查找 HTML 页面中的所有元素 string AParser cleanHTMLDocument const string aDoc vector
  • 如何在cypress中重复操作并获取每个操作的结果

    我正在尝试重复 cypress 中定义的某个操作doTheAction然后得到这些重复动作的结果 当我尝试 Promise all 时 它立即解析为未定义的数组 describe some test gt it for each gt co
  • 如何将变量移入或移出类似于 MATLAB 中的 LOAD 和 SAVE 的结构?

    是否有一种快速方法 即一行 来转储结构 中 的变量集合 使用变量名称作为结构字段 加载 函数基本上就是这样做的 但是保存和加载到临时文件看起来很丑陋 例如 clear a adsf b rand 10 x var2struct a b x
  • Windows GUI自动化[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SimpleStringProperty set() 与 setValue()

    有什么区别set String and setValue String in the SimpleStringProperty http docs oracle com javafx 2 api javafx beans property
  • Boost Fusion:在编译时验证调整后的结构成员排序

    我在用着BOOST FUSION ADAPT STRUCT 我需要检查所有成员是否已声明且顺序正确 所以首先我这样做了 template
  • 根据存储的时区修改 ASP.NET MVC C# 中的日期

    我的问题有两个方面 1 我正在编写一个论坛 但我无法弄清楚如何为论坛用户存储时区 他们将能够设置自己的时区并相应修改论坛上的所有日期 我是否必须创建一个包含时区名称和调整服务器时间的数字的数据库表 NET 是否内置了时区支持 2 一旦我弄清
  • Android Studio:具有两个以上风味维度(风味组)的产品风味组合

    我正在使用 Android Studio v 2 1 gradle 插件 v 2 1 0 开发 Android 应用程序 我的应用程序有各种版本 它们共享许多通用代码 因此我决定使用风格维度和产品风格来在需要时和地点自定义代码和资源 只要我
  • 如何在 R 中获取机器 epsilon?

    R 中是否有一个常量存储机器 epsilon Try Machine double eps and Machine在我的 32 位 Linux 机器上会产生以下结果 R gt Machine double eps 1 2 220e 16 d
  • WebClient.DownloadStringAsync 在 Silverlight 中抛出安全异常

    第一次使用Silverlight 遵循在线教程 我正在创建一个应用程序 允许用户使用 WebClient 从 Digg 网站搜索故事 并将它们显示在 Silverlight 控件的数据网格中 这是代码 private void btnSea
  • 如何将标识符(`proc_macro::Ident`)存储为常量以避免重复?

    我正在编写一个程序宏 我需要多次发出一个非常长的标识符 可能因为卫生 https stackoverflow com q 59618213 2408867 例如 我用quote 创造TokenStreams 但我不想一遍又一遍地重复长标识符
  • 如何获取ConcurrentDictionary的即时快照?

    MSDN https msdn microsoft com en us library dd287131 aspx表明枚举器从返回ConcurrentDictionary并不代表某个时刻的快照ConcurrentDictionary 虽然在
  • 片段中的片段

    我想知道这是否真的是 Android API 中的一个错误 我有这样的设置 1 2 3 是一个在右窗格中加载片段 2 搜索屏幕 的菜单 是一个搜索屏幕 其中包含片段 3 它是一个结果列表 结果列表在多个地方使用 包括作为其本身的功能高级片段
  • ggplot 2.0.0 中的点大小

    自从我更新到 ggplot 版本 2 0 0 后 我在重新创建绘图时遇到了麻烦 似乎我无法像以前那样减少点大小 这是具有很多点的绘图中的一个问题 在下面的示例中 plot1 和plot2 之间的点大小存在合理的差异 plot3 中的点大小至
  • Python-从长度不等的列表中获取所有唯一的组合并进行替换

    注意 这不是标题可能说的重复问题 如果我有一个 list 列表 我需要通过替换从中获取所有组合 import itertools l 1 2 3 1 2 3 1 2 3 n for i in itertools product l if s
  • sqlite 中出现“TYPE_FORWARD_ONLY”错误

    我正在使用 SQLite 和 JDBC 并收到有关 result set 为 TYPE FORWARD ONLY 的错误 PreparedStatement get mileage conn prepareStatement SELECT
  • PHP 中的多线程/多任务

    在 PHP 中 我们通常在编码时不考虑服务器的功能 如今 甚至 PC 也拥有多个内核并处理 64 位数据 据我所知 PHP 引擎本身已针对利用多核进行了优化 我们程序员如何进一步优化代码以利用多核 换句话说 我想知道教我编写代码的技术 这些
  • 有没有办法检查 Android 上是否启用了“从未知来源安装”?

    如果未启用此选项 我想提示用户 这是检查此设置的另一种方法 boolean isNonPlayAppAllowed Settings Secure getInt getContentResolver Settings Secure INST
  • 我可以从 aws s3 恢复下载吗?

    我正在使用 python boto3 库通过蜂窝连接将文件从 s3 下载到物联网设备 该连接通常缓慢且不稳定 有些文件非常大 250Mb 对于这种情况来说很大 并且在下载时网络出现故障并且设备重新启动 我想从设备重新启动时结束的位置恢复下载