我有一个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
的方法,这种方式不涉及严格的预定时限?
感谢
答案 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>
重要的是它会在传输开始时将文件的大小传递给回调函数,然后可以根据文件的大小启动计时器。