2017-09-15 3 views
0

Ich möchte Daten mit Python zu azure Block Blob streamen. Der folgende Code erstellt das Blob aber endet mit Nullbyte. Wie kann ich das schaffen?So streamen Daten in azure Block Blob in Python

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

Hallo, Greg. Irgendein Fortschritt? –

+0

Ich glaube nicht, dass die Python-Bibliothek meine Bedürfnisse erfüllen wird. –

Antwort

0

Es scheint, dass Sie den Schlüssel Codezeile verpasst haben:

stream.seek (0)

stelle ich die Position property auf 0 Stream dann der Code funktioniert.

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

Sie auf diesen Thread Azure storage: Uploaded files with size zero bytes beziehen könnte.

+0

Dies würde erfordern, den gesamten Stream im Speicher zu halten. Ich möchte Daten so streamen, wie ich sie erhalte, ohne einen großen Speicherbedarf zu haben. –

+0

@GregClinton Hallo, Greg. storage.create_blob_from_stream ist ein HTTP-Request-Paket für die Rest-API. Es handelt sich um einen synchronen Blockierungsmodus, so dass Sie keinen Stream betreiben können, der in azure hochgeladen wurde. –

Verwandte Themen