Можем ли мы отправить объект json партиями? - PullRequest
0 голосов
/ 15 мая 2018

У меня большой JSON, и мне нужно отправить его партиями по 1 МБ.Как я могу сделать это в Python ??Любая помощь приветствуется.

Вот код.

Значение - это весь большой JSON.

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))

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

Вы можете попробовать использовать кодированный запрос, отправив ваши данные в качестве генератора, что-то вроде этого:

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) 

и получить 1 МБ за раз:

r.iter_content(chunk_size=1000000)  # 1MB = 1000000 Bytes
0 голосов
/ 15 мая 2018

Вы можете передавать данные, используя запросы

with open('massive-body', 'rb') as f:
    requests.post('http://some.url/streamed', data=f)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...