如何在Python中执行JSON批处理请求?

时间:2015-07-09 07:51:26

标签: python json batch-processing

我有一个功能:

import json, requests

def pull(command, foo):
    headers = {'content-type': 'application/json'}
    payload = json.dumps({"method": command, "params": [foo], "jsonrpc": "2.0"})
    response = requests.get(serverURL, headers=headers, data=payload)

    return(response.json()['result'])

此刻我正在循环(数百万次)。我认为进行多次批量调用比串联执行所有这些调用要快得多。

我似乎找不到任何关于在Python中进行批量RPC调用的文档。

我尝试过:

payload = json.dumps({"method": command, "params": [foo], "jsonrpc": "2.0"}, 
                     {"method": command, "params": [foo+1], "jsonrpc": "2.0"})

无济于事。

2 个答案:

答案 0 :(得分:0)

spec表示你应该传递一系列请求。

您的示例有错误,您应该将RPC dicts的列表或元组传递给data-album-id,而不是多个参数:

请参阅:

.show()

与:

相比
json.dumps

答案 1 :(得分:0)

如果没有API的详细信息,我无法确定哪些方法有效,但您可以尝试以下几种方法:

payload = json.dumps([{"method": command, "params": [foo], "jsonrpc": "2.0"}, 
                      {"method": command, "params": [foo+1], "jsonrpc": "2.0"}])

payload = '\n'.join(json.dumps(x) for x in [
              {"method": command, "params": [foo], "jsonrpc": "2.0"}, 
              {"method": command, "params": [foo+1], "jsonrpc": "2.0"}
            ])