通过流下载azure blob - 退出137

时间:2016-05-21 17:10:38

标签: python python-3.x azure azure-storage

我试图通过Azure-python-sdk get_blob_to_stream下载一个大文件,但是,我的程序一直退出返回代码137 - 这似乎与内存不足有关。 (我可以在顶部看到python正在消耗越来越多的内存,直到它被杀死)。

代码:

ggplot(aa, aes(x=time,y=value,colour=id,group=id)) + 
  geom_line(show.legend=FALSE) +
  scale_y_continuous(limits=c(min(aa$value) - 2, max(aa$value) + 1)) +
  scale_x_date(date_breaks="6 months", 
               labels=function(d) format(d, "%b %Y")) +
  coord_cartesian(xlim=c(as.Date("2009-07-01"), max(aa$time) + 182), 
                  expand=FALSE) +
  theme_bw() +
  theme(axis.text.x=element_text(angle=-90, vjust=0.5))

我正在使用azure-sdk-for-pythonget_blob_to_stream,文件大约为6.5 GB。

该文件被创建为0字节,没有任何内容写入 - 我在这里做了一些明显错误的事情吗?

1 个答案:

答案 0 :(得分:6)

下载SDK并浏览代码后,我发现了如何下载这个大blob。

  1. 必须 提供大于1的max_connections值 - 这样才能够以块的形式下载文件并将其写入流中。
  2. 您需要传入二进制流(' wb')
  3. 来自问题示例的工作代码:

    with io.open(file_path, 'wb') as file:
        self.blob_service.get_blob_to_stream(container_name='wxdata', blob_name=blob_name, stream=file, max_connections=2)