我有一个我需要发送到API的~380条记录的Python列表,但它单独执行它的速度很慢。我目前可以使用这个:
payload_length = len(payload)
for i in range(0, payload_length):
send_contacts(payload[i])
发送单个联系人,但想知道我是否可以启动x个线程。我读到了异步请求和问候,但我无法理解代码。
我很感激任何指示。
答案 0 :(得分:0)
我希望这可以帮助某人从请求转移到问候,因为这比我应该花的时间更长:
原始要求:
print ("Sending stuff requests...")
r = requests.post(url='https://rest.api.com/v1/lists/12345/contacts', data=json_payload, headers={'Content-Type': 'application/json','Authorization' : 'Basic '+ api_string}, timeout=5)
print(json.loads(r.text))
我想到的是我可以手动输入URL并在我的“for u in urls”中我实际上得到了一个json有效负载的列表,这些有效负载一次性被触发而不是多个URL。我确定这仍然是超级糟糕的代码,但这是对我的问题的一个快速和黑客的修复:
print ("Sending stuff grequests...")
rs = (grequests.post('https://rest.api.com/v1/lists/12345/contacts', data=u[1], headers={'Content-Type':'application/json', 'Authorization' : 'Basic '+ api_string}) for u in urls)
responses = grequests.map(rs)
for response in responses:
print(json.loads(response.text))