this repo has no description
at main 2.2 kB view raw
1import requests 2import time 3import sys 4from datetime import datetime 5 6# Configuration 7URL = "http://localhost:8080/xrpc/app.vylet.feed.getActorPosts?actor=hailey.at" 8INITIAL_DELAY = 5.0 9MIN_DELAY = 0.001 10RAMP_FACTOR = 0.5 11 12 13def make_request(session, request_num, delay): 14 try: 15 start_time = time.time() 16 response = session.get(URL, timeout=10) 17 elapsed = time.time() - start_time 18 19 timestamp = datetime.now().strftime("%H:%M:%S") 20 rate = 1 / delay if delay > 0 else float("inf") 21 22 print( 23 f"[{timestamp}] Request #{request_num:4d} | " 24 f"Status: {response.status_code} | " 25 f"Time: {elapsed:.3f}s | " 26 f"Rate: {rate:.2f} req/s" 27 ) 28 29 return True 30 except requests.exceptions.RequestException as e: 31 timestamp = datetime.now().strftime("%H:%M:%S") 32 print(f"[{timestamp}] Request #{request_num:4d} | ERROR: {e}") 33 return False 34 35 36def main(): 37 print("=" * 70) 38 print("Gradual Load Tester") 39 print("=" * 70) 40 print(f"Target URL: {URL}") 41 print(f"Starting delay: {INITIAL_DELAY}s ({1 / INITIAL_DELAY:.2f} req/s)") 42 print(f"Min delay: {MIN_DELAY}s ({1 / MIN_DELAY:.2f} req/s)") 43 print( 44 f"Ramp factor: {RAMP_FACTOR} (gets {(1 - RAMP_FACTOR) * 100:.0f}% faster each cycle)" 45 ) 46 print("=" * 70) 47 print("\nPress Ctrl+C to stop\n") 48 49 session = requests.Session() 50 delay = INITIAL_DELAY 51 request_num = 0 52 53 try: 54 while True: 55 request_num += 1 56 make_request(session, request_num, delay) 57 58 time.sleep(delay) 59 60 if delay > MIN_DELAY: 61 delay = max(delay * RAMP_FACTOR, MIN_DELAY) 62 if delay == MIN_DELAY: 63 print(f"\n{'=' * 70}") 64 print(f"Reached maximum rate: {1 / MIN_DELAY:.2f} requests/second") 65 print(f"{'=' * 70}\n") 66 67 except KeyboardInterrupt: 68 print(f"\n\n{'=' * 70}") 69 print(f"Stopped after {request_num} requests") 70 print(f"Final rate: {1 / delay:.2f} requests/second") 71 print(f"{'=' * 70}") 72 sys.exit(0) 73 74 75if __name__ == "__main__": 76 main()