Приветствую.
Задача: требуется отправить на сервер более одного POST-запроса, не ожидая ответа (возможно, складируя их в дальнейшем по мере поступления) перед каждым следующим запросом.
С подобным кодом программа ожидает ответа после каждого запроса. В итоге получается не нагрузка на API в виде одновременных 10 запросов, а последовательное их выполнение. Как их отправить вместе одновременно, а приходящие ответы поставить в очередь и записать?
from datetime import datetime
import random
import requests
import threading
import time
#Выбор стенда
hostUrl = {1: '1.2.3.4', 2: '1.2.3.5', 3: '1.2.3.6'}
print('Введите номер стенда для тестирования', '\n', '1 - Тестовый (' + hostUrl[1] + ')', '\n', '2 - Дев (' + hostUrl[2] + ')', '\n', '3 - Бой (' + hostUrl[3] + ')', sep='')
urlSelect = str(hostUrl[int(input())])
hostAddr = urlSelect
#Генератор ip-адреса
ipRaw = []
for x in range(4):
ipRaw.append(str(random.randint(1, 255)))
ipTrue = '.'.join(ipRaw)
#Время авторизации
loginTime = datetime.today().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]
#Функция отправки запроса
def userLogin(hostAddr, loginTime):
UnencodedRequest = open("1.xml", "r")
body = UnencodedRequest.read().encode("UTF-8")
headers = {'Host': hostAddr,
'Content-Type': 'text/xml;charset=UTF-8',
'Content-Length': str(len(body)),
'SOAPaction': 'http://tempuri.org/UserWcf/User',
'Browser': 'AutoTest_' + loginTime,
'Ip': ipTrue,
'Application-Id': '1'}
response = requests.post(url='http://' + hostAddr +'/UserWcf.svc?wsdl',
headers=headers,
verify=False,
data=body)
print(response.text + '\n', sep='')
UnencodedRequest.close()
#Попытка отправки запроса десятью потоками
for t in range(10):
threading.Thread(target=userLogin(hostAddr, loginTime)).start()
time.sleep(10)