aws python-boto:寻找可靠的方法来中断get\u-contents-tu-filenam

2024-10-01 09:39:08 发布

您现在位置:Python中文网/ 问答频道 /正文

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

 def processNewDataFile(key):

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

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

那么,有没有一种可靠的方法来中断/超时get_contents_to_filename,而不涉及硬的预定时间限制?在

谢谢


Tags: 文件tokey函数代码gets3def
1条回答
网友
1楼 · 发布于 2024-10-01 09:39:08

您可以使用带有get_contents_to_filename的回调函数

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

回调函数需要两个参数:发送的字节数和文件的总大小。 您也可以指定粒度(调用回调的最大次数),尽管我只在小文件(小于10kb)中使用它,并且通常只调用两次-一次在开始时调用,一次在结束时调用。在

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

相关问题 更多 >