我有如下数据
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 分钟的时间,而且并非所有用户状态都更改为“就绪”。对于每个用户,状态应以“就绪”状态发送。
任何人都可以帮助我解决这个问题以及如何提高编码部分的性能(我已经评论了响应并检查了执行时间。它更快并且 seams API 本身需要时间来响应每个用户)
感谢您的帮助。
最佳答案
我怀疑您的性能问题归结为发送了不正确的数据,您的最终数据始终包括以前迭代中的用户,因此您没有更新 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)
关于Python 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58412517/