我有如下数据
print(json_ls)
[{'user_id': '1', 'lot_number': 'b49d18f1b', 'status': 'send'},
{'user_id': '2', 'lot_number': 'b49d18f1c', 'status': 'send'},
{'user_id': '3', 'lot_number': 'b49d18f1d', 'status': 'send'},
{'user_id': '4', 'lot_number': 'b49d18f1e', 'status': 'send'}]
我需要以以下格式将上述数据发送到API
{'users': [
{'user_id': '1', 'status': 'ready'},
{'user_id': '2', 'status': 'ready'},
{'user_id': '3', 'status': 'ready'},
{'user_id': '4', 'status': 'ready'}
]}
我写了下面的代码,因为url需要批号,所以我最初考虑是在数据框中放入下面的代码。
final_data = {'users': []}
for ls in json_ls:
lot = ls.get("lot_number")
url = url + lotnumber
request_data = {a: b for (a, b) in ls.items() if a != "lot_number"}
final_data['users'].append(request_data)
for users in final_data.get("recipients"):
users["status"] = "ready"
response = requests.patch(url, data=json.dumps(final_data), headers=headers)
要处理500个用户使用API,需要花费15分钟的时间,而且并非所有用户状态都已更改为“就绪”。对于每个用户,该状态应以“就绪”状态发送。
任何人都可以帮助我,以及如何提高编码部分的性能(我已经评论了响应并检查了执行时间。速度更快,而接缝API本身需要花费时间来响应每个用户)
感谢您的帮助。
答案 0 :(得分:0)
我怀疑您的性能问题归结为发送不正确的数据,您的最终数据始终包含以前迭代中的用户,因此您没有更新500个用户,而是要更新1 + 2 + ... + 500个用户(125k用户) )。
真的,您根本不需要最终数据。
for ls in json_ls:
lot = ls.get("lot_number")
url = url + lotnumber
response = requests.patch(url, data=json.dumps({'users': [ {'user_id':ls['user_id'], 'status': 'ready'}]}), headers=headers)