Python 性能问题

标签 python web-services

我有如下数据

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/

相关文章:

php - 尝试测试 UPS "Quantum"接口(interface) - XML 文档格式不正确

python - 需要 Django 表单集

python - 如何使用pytest基于服务器输出测试客户端-服务器交互?

python - 使用一维数组上的条件屏蔽二维数组的最佳方法

python - Python中object的__hash__()和__eq__()的源代码是什么?

c# - 如何序列化从 C# ASP.NET 3.5 中的 Web 服务返回的对象列表?

python - 查找元组中列表的数量

web-services - 使用 Arduino GSM/GPRS shield 将数据发送到我的网络服务

php - 在 PHP 中使用 fopen($url) 和 curl 有什么重要区别?

c# - 如何仅在数据访问层(.NET 类库)中存储连接字符串