mirror of
https://github.com/weaveworks/scope.git
synced 2026-03-03 18:20:27 +00:00
60 lines
1.7 KiB
Python
60 lines
1.7 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, args.port)
|
|
addrs = [a
|
|
for a in addrs
|
|
if a[0] == socket.AF_INET]
|
|
if len(addrs) <= 0:
|
|
logging.info("Could not resolve %s", args.target)
|
|
return
|
|
addr = random.choice(addrs)
|
|
url = "http://%s:%d%s" % (addr[4][0], args.port, args.path)
|
|
s.get(url, timeout=args.timeout)
|
|
logging.info("Did request %s", url)
|
|
|
|
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(args.period)
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('-target', default="frontend.weave.local")
|
|
parser.add_argument('-port', default=80, type=int)
|
|
parser.add_argument('-path', default="/")
|
|
parser.add_argument('-concurrency', default=1, type=int)
|
|
parser.add_argument('-persist', default=True, type=bool)
|
|
parser.add_argument('-timeout', default=1.0, type=float)
|
|
parser.add_argument('-period', default=0.1, type=float)
|
|
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()
|