2017-09-15 4 views
0

Je veux streamer des données vers blob block blob avec python. Le code ci-dessous crée le blob mais se termine par zéro octet. Comment puis-je faire ce travail?Comment streamer des données vers blob block blob en 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

Salut, Greg. Aucun progrès? –

+0

Je ne pense pas que la bibliothèque python répondra à mes besoins. –

Répondre

0

Il semble que vous avez manqué la ligne clé du code:

stream.seek (0)

Je mis Position property à 0 de flux alors votre code fonctionne.

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

Vous pouvez consulter à ce fil Azure storage: Uploaded files with size zero bytes.

+0

Cela nécessiterait de conserver le flux entier en mémoire. Je veux diffuser des données sans les encombrer. –

+0

@GregClinton Bonjour, Greg. storage.create_blob_from_stream est en fait un paquet de requête http pour l'API de repos, c'est un mode de blocage synchrone donc vous ne pouvez pas utiliser le flux qui a été téléchargé sur azure. –