@Sl0n1k

Как сделать одновременно >1 POST-запросов без ожидания ответа?

Приветствую.

Задача: требуется отправить на сервер более одного 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)
  • Вопрос задан
  • 856 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Параметр target должен получать ссылку на функцию, а в вашем случае он получает результат вывзова функции.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы