2 votes

Peut-on envoyer des objets json par lots ?

J'ai un gros JSON et je dois l'envoyer par lots de 1 Mo. Comment puis-je faire cela en Python ? Toute aide est appréciée.

Voici le code.

La valeur est le gros JSON entier.

for key, value in attributeJs.iteritems() :
                data = value
                headers = {'Content-Type' : 'application/json'}
                try:
                        requests.packages.urllib3.disable_warnings()
                        r = requests.post(url=URL_ATTRIBUTE, headers=headers, verify=False, data=data, timeout=(15,20))

1voto

mij Points 532

Vous pouvez essayer d'utiliser une requête codée en chunk en envoyant vos données sous forme de générateur, quelque chose comme ceci :

def generator():
    for key, value in attributeJs.iteritems():
        yield value

headers = {'Content-Type' : 'application/json',
           'Transfer-encoding':'chunked'}

requests.packages.urllib3.disable_warnings()
r = requests.post(url=URL_ATTRIBUTE, headers=headers, verify=False, 
data=generator(), timeout=(15,20), stream=True) 

et pour obtenir 1MB à la fois :

r.iter_content(chunk_size=1000000)  # 1MB = 1000000 Bytes

0voto

Bart Points 322

Vous pouvez diffuser les données en utilisant demande

with open('massive-body', 'rb') as f:
    requests.post('http://some.url/streamed', data=f)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X