私は自分のAPIのストレステストをする必要があります。 また、私は私の要求にいくつかのデータを入れて、代わりにヘッドのPOSTを送信するためにthat exampleを修正:Pythonを使用して1秒当たり1k POST HTTPリクエストをデータと共に送信するには?
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に達するのは本当ですか?
もちろん、POSTでは、HEADよりもはるかに多くの処理がWebサーバーで必要になります。 Webサーバーは並行要求をどれくらいうまく処理していますか?より多くの労働者を使用するように設定できますか?それは*労働者を使用していますか? POSTに切り替えることで、質問の範囲にサーバーとクライアントの処理が含まれるようになりました。 – PaulMcG
私はTwistedをサーバー側で使用しています –
サーバーが1000req /秒を処理できるように注意してください。クライアントコードはボトルネックではありません。 Twistedを使うだけで魔法の杖ではありません。ハンドラを複数のDeferredに分割して、処理とI/Oを同時に並行して要求と重複させる必要があります。 – PaulMcG