mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 10:11:03 +00:00
54 lines
1.4 KiB
Python
54 lines
1.4 KiB
Python
import argparse
|
|
import requests
|
|
import random
|
|
import threading
|
|
import time
|
|
import logging
|
|
import socket
|
|
import sys
|
|
|
|
def do_request(s, args):
|
|
addrs = socket.getaddrinfo(args.target, 80)
|
|
addrs = [a
|
|
for a in addrs
|
|
if a[0] == socket.AF_INET]
|
|
logging.info("got %s", addrs)
|
|
if len(addrs) <= 0:
|
|
return
|
|
addr = random.choice(addrs)
|
|
s.get("http://%s:%d" % addr[4], timeout=1.0)
|
|
|
|
def do_requests(args):
|
|
s = requests.Session()
|
|
while True:
|
|
try:
|
|
if args.persist:
|
|
do_request(s, args)
|
|
else:
|
|
do_request(requests.Session(), args)
|
|
except:
|
|
logging.error("Error doing request", exc_info=sys.exc_info())
|
|
|
|
time.sleep(1)
|
|
logging.info("Did request")
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-target', default="frontend")
|
|
parser.add_argument('-concurrency', default=2, type=int)
|
|
parser.add_argument('-persist', default=True, type=bool)
|
|
args = parser.parse_args()
|
|
|
|
logging.info("Starting %d threads, targeting %s", args.concurrency, args.target)
|
|
threads = [threading.Thread(target=do_requests, args=(args,))
|
|
for i in range(args.concurrency)]
|
|
for thread in threads:
|
|
thread.start()
|
|
for thread in threads:
|
|
thread.join()
|
|
logging.info("Exiting")
|
|
|
|
if __name__ == "__main__":
|
|
logging.basicConfig(format='%(asctime)s %(levelname)s %(filename)s:%(lineno)d - %(message)s', level=logging.INFO)
|
|
main()
|