我们可以分批发送json对象吗?

时间:2018-05-15 10:17:19

标签: python json python-requests

我有一个很大的JSON,我需要批量发送1MB。我怎么能在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 :(得分:1)

您可以尝试使用块编码请求,将数据作为生成器发送,如下所示:

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) 

并且一次获得1MB:

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

答案 1 :(得分:0)

您可以使用requests

流式传输数据
with open('massive-body', 'rb') as f:
    requests.post('http://some.url/streamed', data=f)