什么是获得了大量来自Python文件(相对较小10-50kB)从Amazon S3最快的方法? (在20万个的订单 - 万个文件)。

目前我使用的博托生成签署的网址,并使用PyCURL获得文件一个接一个。

请问某种类型的并发帮助? PyCurl.CurlMulti反对呢?

我向所有人开放的建议。谢谢!

有帮助吗?

解决方案

在蟒的情况下,因为这是IO束缚,多个线程将使用CPU的,但它可能会占用只有一个核心。如果你有多个内核,你可能要考虑新的模块。即使如此,你可能希望有每个进程使用多个线程。你必须做的处理器和线程数的一些调整。

如果你使用多个线程,这是一个很好的候选人队列类。

其他提示

我不知道蟒蛇什么,但一般你会想下来把任务分成小块,使他们能够同时运行。你可以把它分解由文件类型,或字母或东西,然后运行一个单独的脚本用于击穿的每个部分。

您可能会考虑使用 s3fs ,只是运行并行文件系统命令在Python。

我一直在使用txaws与扭曲为S3的工作,虽然你可能会想什么是只是为了获得认证的网址,并使用twisted.web.client.DownloadPage(默认情况下会很乐意从流没有太多到文件去交互)。

扭曲可以很容易地在任何你想要的并发运行。对于20万的数量级上的东西,我可能会做一个发电机和使用合作者来设置我的并发性,只是让发生器生成每个需要下载请求。

如果你不熟悉的扭曲,你会发现模型需要一点时间来适应,但它是如此值得的。在这种情况下,我希望它采取最小的CPU和内存开销,但你不必担心文件描述符。这是相当容易的角度经纪人和农场工作调配出到多台机器,你应该找到自己需要更多的文件描述符,或者如果你有多个连接在其上,你想它拉下来。

怎么样线程+队列,我喜欢这篇文章:实用线程编程与Python

每个作业可以用适当的工具来完成:)

您想使用Python进行压力测试S3 :),所以我建议找一个大体积的下载程序,并通过链接到它。

在Windows上我有安装ReGet程序(共享软件,从 http://reget.com )和创建经验经由COM接口下载任务。

当然有可能与可用接口的其他程序存在。

问候!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top