summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--fib.py5
-rw-r--r--perf1.py15
-rw-r--r--perf2.py25
-rw-r--r--server.py29
4 files changed, 74 insertions, 0 deletions
diff --git a/fib.py b/fib.py
new file mode 100644
index 0000000..129fb51
--- /dev/null
+++ b/fib.py
@@ -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))