audio streaming app plyr.fm
38
fork

Configure Feed

Select the types of activity you want to include in your feed.

at e5b2958ea3b8c203b608287e504ef3fab7f5dbcb 73 lines 2.0 kB view raw
1import asyncio 2import sys 3import time 4 5import httpx 6 7BASE_URL = "https://api-stg.plyr.fm" 8 9 10async def check_health(client): 11 print(f"Checking {BASE_URL}/health...") 12 try: 13 resp = await client.get(f"{BASE_URL}/health") 14 if resp.status_code == 200: 15 print("✅ Health check passed") 16 else: 17 print(f"❌ Health check failed: {resp.status_code}") 18 sys.exit(1) 19 except Exception as e: 20 print(f"❌ Connection failed: {e}") 21 sys.exit(1) 22 23 24async def verify_rate_limit(client): 25 print("\nVerifying rate limits (target: >100 reqs)...") 26 # Global limit is 100/min per instance. 27 # With N instances, capacity is N * 100. 28 count = 250 29 rate_limited = 0 30 success = 0 31 32 start = time.time() 33 # Send in batches 34 batch_size = 50 35 for _ in range(0, count, batch_size): 36 tasks = [] 37 for _ in range(batch_size): 38 tasks.append(client.get(f"{BASE_URL}/health")) 39 40 responses = await asyncio.gather(*tasks, return_exceptions=True) 41 42 for r in responses: 43 if isinstance(r, httpx.Response): 44 if r.status_code == 429: 45 rate_limited += 1 46 elif r.status_code == 200: 47 success += 1 48 else: 49 print(f"Unexpected status: {r.status_code}") 50 else: 51 print(f"Request error: {r}") 52 53 if rate_limited > 0: 54 print(f"Hit limit after {success + rate_limited} requests!") 55 break 56 57 duration = time.time() - start 58 print(f"Summary: {success} OK, {rate_limited} Limited in {duration:.2f}s") 59 60 if rate_limited > 0: 61 print("✅ Rate limiting confirmed active") 62 else: 63 print("⚠️ No rate limits hit - capacity might be higher than tested") 64 65 66async def main(): 67 async with httpx.AsyncClient(timeout=10.0) as client: 68 await check_health(client) 69 await verify_rate_limit(client) 70 71 72if __name__ == "__main__": 73 asyncio.run(main())