aws python boto:寻找可靠的方法来中断get_contents_to_filename

时间:2012-12-26 20:32:39

标签: python amazon-web-services interrupt

我有一个python函数,可以将文件从S3下载到本地驱动器上的某个临时位置,然后对其进行处理。下载部分如下所示:

 def processNewDataFile(key):

     ## templocation below is just some temp local path
     key.get_contents_to_filename(templocation)
     ## further processing

此处key是要下载文件的AWS密钥。我注意到偶尔get_contents_to_filename似乎冻结了。在我的代码的其他部分,我有一些解决方案,如果这些块在指定的时间内没有完成,则会中断代码块(并引发异常)。这个解决方案很难在这里使用,因为我需要下载的文件大小不一,有时S3响应速度比其他时间慢。

那么是否存在任何可靠的中断/超时get_contents_to_filename的方法,这种方式不涉及严格的预定时限?

感谢

1 个答案:

答案 0 :(得分:0)

您可以使用get_contents_to_filename

的回调函数

http://boto.cloudhackers.com/en/latest/ref/gs.html#boto.gs.key.Key.get_contents_to_file

回调函数需要两个参数:Bytes Sent和文件的总大小。 您可以指定粒度(回调将被调用的最大次数),虽然我只使用它与小文件(小于10kb),它通常只被调用两次 - 一次开始和一次结束。 / p>

重要的是它会在传输开始时将文件的大小传递给回调函数,然后可以根据文件的大小启动计时器。