Как отправлять 1к POST http запросов в секунду с данными, используя Python?

Мне нужно сделать стресс-тест для моего API. Я изменил этот пример для отправки POST вместо HEAD, а также добавил некоторые данные в свой запрос:

count = int(sys.argv[1])
url = "http://api.example.com/"
test_id = datetime.now().strftime("%H%M%S%f")
data = []
for i in range(count):
    req_data = {
        'test_id': test_id,
        'param1': i,
        'param2': 'aaa',
        'param3': 'bbb',
    }
    data.append(req_data)

start_time = time.time()
res = grequests.map(grequests.post(url, data=data[i]) for i in range(count))
sending_time = time.time() - start_time
print(sending_time)

После этого производительность упала до 5 запросов в секунду! Также я попробовал все ответы на этот вопрос и получил тот же результат. Реально ли достигать 1000 рэк / сек?

1 ответ

Да, ты можешь это сделать.

Вы можете достичь этого, создав несколько процессов и потоков.

Ex. Использование подпроцесса

Здесь мы делаем 10 подпроцессов, и каждый будет делать 100 запросов. Таким образом, через секунду вы сможете выполнить 1000 запросов.

import subprocess

for i in range(10):
    subprocess.Popen(["python","pathToPythonScript/stressTesting.py","100"])
Другие вопросы по тегам