我写了一个Python脚本来自动构建一个azurevm并从KVM上传到Azure,我面临一个我无法修复的问题。 一旦虚拟机构建完成,我就试图使用azurepython模块将磁盘上传到Azure,问题是脚本实际上正在吞噬所有可用的RAM。我试过几种编码方法,结果总是一样的。在
block_blob_service = BlockBlobService(vars.az_storage_acc_name, vars.az_sto_key)
blob = open(args.pool_path + args.name + "-az"+'.vhd', 'r')
print "Upload {} to Azure Blob service".format(args.name +"-az"+'.vhd')
block_blob_service.create_blob_from_stream(vars.az_cnt, args.name +"-az"+'.vhd', blob)
我也尝试了以下方法:
^{pr2}$运气不好,每次创建blob时都会失败,因为没有可用的RAM。在
你有没有线索可以让我做到这一点?在
感谢您的意见。在
我不明白的是,到底有什么区别
以及
^{pr2}$如果它想把所有的东西都放在内存里?在
这将需要将整个流保存在内存中,除非您的计算机中有max RAM size,否则此代码将无法工作,并在某个时刻给您systemoutofemory异常。在
我建议你把流分块上传,而不是一次性地写。在
这里有一个函数可以将流分块上传
作为参考,你可以浏览下面的线程
https://github.com/Azure/azure-storage-python/blob/master/azure-storage-blob/azure/storage/blob/_upload_chunking.py
同样,对于同一类型的请求也有类似的线程
how to transfer file to azure blob storage in chunks without writing to file using python
或者,您可以使用powershell将VHD上载到vm存储帐户,如下所示
^{pr2}$这是相同的参考
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/upload-generalized-managed
希望有帮助。在
相关问题 更多 >
编程相关推荐