日々のあれこれφ(..)

もっぱら壁打ち

【Python】ランダムに少しずつリクエストを増やしていく

負荷の高いリクエストを検証をするときに書いたスクリプト

既存データ群を引っ張ってきて、それをランダムに参照しつつ、リクエスト数を徐々に増やし、リクエストごとにレスポンスタイムを計測します。

この時は1回目はDBを再起動してメモリにデータが載っていない状態で行い、2回目続けて実行してレスポンスタイムや各種メトリクスを見比べることをしていました。

メモリにデータが乗りすぎても乗らなさすぎても参考値になるか微妙だったので、どうやって検証するのが良いものか悩んでいた時に同僚に教えてもらいました。ありがたや🙏

import csv
import json
import random
import requests
from time import time

AUTH_TOKEN = ''
URL = ''
FILE = ''  # sample.csv

headers = {
    'content-type': 'application/json',
    'Authorization': f'Bearer {AUTH_TOKEN}'
}

with open(FILE) as fp:
    reader = csv.reader(fp)
    IDS = [row[0] for row in reader]
MAX_IDS = 5000

for n in range(0, MAX_IDS+500, 500):
    if n == 0:
        continue

    random_ids = random.sample(IDS, n)
    d = {} # payload
    data = json.dumps(d)
    s = time()
    r = requests.post(URL, headers=headers, data=data)
    # n件リクエストした時のAPIの応答速度を記録
    print(n, time() - s, r.status_code)