67 lines
1.6 KiB
Python
67 lines
1.6 KiB
Python
import sys
|
|
import multiprocessing
|
|
import time
|
|
|
|
|
|
def independent_worker(result_queue):
|
|
import pycurl
|
|
|
|
|
|
prepared_curl = pycurl.Curl()
|
|
prepared_curl.setopt(pycurl.URL, "https://birb.k8s.kmlabz.com/benchmark")
|
|
prepared_curl.setopt(pycurl.SSL_VERIFYPEER, 0)
|
|
prepared_curl.setopt(pycurl.SSL_VERIFYHOST, 0)
|
|
# prepared_curl.setopt(pycurl.FORBID_REUSE, 0)
|
|
prepared_curl.setopt(pycurl.HTTP_VERSION, pycurl.CURL_HTTP_VERSION_2_0)
|
|
prepared_curl.setopt(pycurl.WRITEFUNCTION, lambda data: None)
|
|
|
|
start_time = time.time()
|
|
stop_time = 0
|
|
count = 0
|
|
|
|
while True:
|
|
prepared_curl.perform()
|
|
|
|
count += 1
|
|
|
|
if count % 50 == 0:
|
|
if (time.time() - start_time) >= 10:
|
|
stop_time = time.time()
|
|
break
|
|
|
|
runtime = stop_time - start_time
|
|
|
|
prepared_curl.close()
|
|
|
|
result_queue.put((runtime, count))
|
|
|
|
|
|
def main():
|
|
num_workers = int(sys.argv[1])
|
|
|
|
result_queue = multiprocessing.Queue()
|
|
|
|
workers = []
|
|
for _ in range(num_workers):
|
|
workers.append(multiprocessing.Process(target=independent_worker, args=(result_queue,)))
|
|
|
|
for w in workers:
|
|
w.start()
|
|
|
|
for w in workers:
|
|
w.join()
|
|
|
|
total_requests_sent = 0
|
|
print("Completed requests for each worker:")
|
|
while not result_queue.empty():
|
|
requests_sent = result_queue.get()
|
|
print('-', requests_sent[1], 'req ', requests_sent[0], 'sec')
|
|
total_requests_sent += requests_sent[1]
|
|
|
|
print("Total completed requests:", total_requests_sent)
|
|
print(total_requests_sent / 10, "req/s")
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|