#!/usr/bin/env python3 """A deliberately slow SSE reader on a raw socket: recv() up to CHUNK bytes every INTERVAL seconds (default 64 KiB / 0.2 s, about 320 KB/s at most) and keep the running byte count in a file so another process can sample it. Usage: slow_client.py URL COUNTER_FILE [CHUNK] [INTERVAL] [SECONDS]""" import socket, sys, time, urllib.parse url, counter = sys.argv[1], sys.argv[2] chunk = int(sys.argv[3]) if len(sys.argv) > 3 else 64 * 1024 interval = float(sys.argv[4]) if len(sys.argv) > 4 else 0.2 limit = float(sys.argv[5]) if len(sys.argv) > 5 else 14.0 u = urllib.parse.urlparse(url) s = socket.create_connection((u.hostname, u.port)) s.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 64 * 1024) s.sendall(f"GET {u.path}?{u.query} HTTP/1.1\r\nHost: {u.hostname}\r\nAccept: text/event-stream\r\n\r\n".encode()) total, t0 = 0, time.time() while time.time() - t0 < limit: data = s.recv(chunk) if not data: break total += len(data) open(counter, "w").write(str(total)) time.sleep(interval) s.close()