2017-09-15 6 views
0

파이썬으로 푸른 블록 BLOB에 데이터를 스트리밍하고 싶습니다. 아래 코드는 blob을 생성하지만 0 바이트로 끝납니다. 이 작품을 어떻게 만들 수 있습니까?파이썬에서 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

파이썬 라이브러리가 내 요구 사항을 충족시키지 않을 것이라고 생각합니다. –

답변

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은 실제로 API를위한 http 요청 패키지입니다. 동기 차단 모드이므로 하늘빛으로 업로드 된 스트림을 조작 할 수 없습니다. –