【问题标题】:Is aws CLI faster than using boto3?aws CLI 比使用 boto3 更快吗?
【发布时间】:2018-02-08 18:32:17
【问题描述】:

我将包存储在 s3 存储桶中。我需要读取每个包的元数据文件并将元数据传递给程序。我使用boto3.resource('s3') 在 python 中读取这些文件。代码需要几分钟才能运行。如果我使用 aws cli sync,它下载这些元文件的速度比 boto 快得多。我的猜测是,如果我不下载而只阅读元文件,它应该会更快。但事实并非如此。可以肯定地说 aws cli 比使用 boto 更快吗?

【问题讨论】:

    标签: python amazon-s3 boto boto3


    【解决方案1】:

    根据我的经验,我没有看到 CLI 比 boto 更快。正如 helloV 所提到的,CLI 是由专业人士编写的,并且保持在最佳水平,而 boto 是由初级到掌握的用户编写的。

    如果您只需要元数据并希望使用 boto 快速使用脚本,我强烈建议您使用客户端而不是资源和名为 head_object 的方法,该方法执行读取但不下载,并且元数据可在 json 响应结构中检索.

    【讨论】:

    • 我使用客户端而不是资源和繁荣,它快得多!
    【解决方案2】:

    AWS Command-Line Interface (CLI) 实际上使用 boto 本身,所以它并不“更快”。

    但是,aws s3 sync 命令使用线程同时复制多个文件,因此复制操作花费的时间更少。

    【讨论】:

      【解决方案3】:

      AWS CLI 确实使用 boto,但正如您所料,cli 不是一个瘦包装器。当涉及到复制 S3 数据树(包括单个大文件后面的多部分块)时,制作一个既彻底又快速的包装器需要很多逻辑,并且可以无缝地拾取哪里部分下载已停止,或仅有效同步服务器上更改的数据。

      据我所见,awscli 代码中的实现比 Python 或 Java SDK 中的任何内容都更彻底。我见过几个开发人员因为太自豪而无法从他们的代码中调用 CLI,但是到目前为止,我所看到的所有此类尝试都未能达到零。不过,喜欢看一个反例。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 1970-01-01
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多