diff options
-rw-r--r-- | fib.py | 5 | ||||
-rw-r--r-- | perf1.py | 15 | ||||
-rw-r--r-- | perf2.py | 25 | ||||
-rw-r--r-- | server.py | 29 |
4 files changed, 74 insertions, 0 deletions
@@ -0,0 +1,5 @@ +def fib(n): + if n <= 2: + return 1 + else: + return fib(n-1) + fib(n-2) diff --git a/perf1.py b/perf1.py new file mode 100644 index 0000000..9630f90 --- /dev/null +++ b/perf1.py @@ -0,0 +1,15 @@ +# perf1.py +# TIme of long running request + +from socket import * +import time + +sock = socket(AF_INET, SOCK_STREAM) +sock.connect(('localhost', 25000)) + +while True: + start = time.time() + sock.send(b'30') + resp = sock.recv(100) + end = time.time() + print(end - start) diff --git a/perf2.py b/perf2.py new file mode 100644 index 0000000..9d65697 --- /dev/null +++ b/perf2.py @@ -0,0 +1,25 @@ +# perf1.py +# TIme of short running request + +from socket import * +import time +from threading import Thread + +sock = socket(AF_INET, SOCK_STREAM) +sock.connect(('localhost', 25000)) + +n = 0 + +def monitor(): + global n + while True: + time.sleep(1) + print(n, 'reqs/sec') + n = 0 + +Thread(target=monitor).start() + +while True: + sock.send(b'1') + resp = sock.recv(100) + n += 1 diff --git a/server.py b/server.py new file mode 100644 index 0000000..9228c7f --- /dev/null +++ b/server.py @@ -0,0 +1,29 @@ +# serever.py +# Fibonacci microservice + +from socket import * +from fib import fib +from threading import Thread + +def fib_server(address): + sock = socket(AF_INET, SOCK_STREAM) + sock.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) + sock.bind(address) + sock.listen(5) + while True: + client, addr = sock.accept() + print("Connection", addr) + Thread(target=fib_handler, args=(client,), daemon=True).start() + +def fib_handler(client): + while True: + req = client.recv(100) + if not req: + break + n = int(req) + result = fib(n) + resp = str(result).encode('ascii') + b'\n' + client.send(resp) + print('Closed') + +fib_server(('', 25000)) |