2017-09-15 69 views
0

我想用python將數據流式傳輸到azure塊blob。下面的代碼創建了blob,但以零字節結束。我該如何做這項工作?如何在python中將數據流式傳輸到azure塊blob

import io 
import struct 
from azure.storage.blob import BlockBlobService 

storage = BlockBlobService('acct-xxx', 'key-xxx') 
stream = io.BytesIO() 
storage.create_blob_from_stream("mycontainer", "myblob", stream) 
stream.write(struct.pack("d", 12.34)) 
stream.write(struct.pack("d", 56.78)) 
stream.close() 
+0

嗨,Greg。任何進展? –

+0

我不認爲python庫會滿足我的需求。 –

回答

0

看來你已經錯過了代碼的關鍵行:

stream.seek(0)

我設置流的Position property 0,那麼你的代碼工作。

import io 
import struct 
from azure.storage.blob import BlockBlobService 

storage = BlockBlobService('acct-xxx', 'key-xxx') 
stream = io.BytesIO() 

stream.write(struct.pack("d", 12.34)) 
stream.write(struct.pack("d", 56.78)) 
stream.seek(0) 
storage.create_blob_from_stream("mycontainer", "myblob", stream) 
stream.close() 

enter image description here

您可以參考這個線程Azure storage: Uploaded files with size zero bytes

+0

這將需要將整個流保存在內存中。我希望按照流的方式傳輸數據,而不會產生大量內存佔用。 –

+0

@GregClinton嗨,Greg。 storage.create_blob_from_stream實際上是一個用於rest API的http請求包,它是一種同步阻塞模式,因此您無法操作已上傳到azure的流。 –

相關問題