如何使用Python每秒发送1k POST http请求?

时间:2017-05-19 09:24:54

标签: python http twisted python-asyncio grequests

我需要为我的API进行压力测试。 我修改that example以发送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个请求! 此外,我尝试了that question的所有答案,并收到了相同的结果。是真的达到1000 req / sec?

1 个答案:

答案 0 :(得分:0)

是的,你可以这样做。

您可以通过创建多个进程和线程来实现此目的。

  

实施例。使用子流程

在这里,我们正在制作10个子流程,每个子流程将生成100个请求。所以在一秒钟内,您将能够执行1000个请求。

import subprocess

for i in range(10):
    subprocess.Popen(["python","pathToPythonScript/stressTesting.py","100"])