summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKali Kaneko (leap communications) <kali@leap.se>2016-03-31 21:54:49 -0400
committerKali Kaneko (leap communications) <kali@leap.se>2016-03-31 22:30:44 -0400
commitce4cb42cb521260e2f7091dd80b136320f32663f (patch)
tree8977899c8761ce6492fe631522d28e4398b61d17
parent39794129de708ec8e6a2e18ee6f0ac094844407c (diff)
pass FIB parameter as environment variable
-rw-r--r--README.rst6
-rw-r--r--server.py10
-rw-r--r--server2.py12
-rw-r--r--server3.py13
-rw-r--r--tasks.py17
5 files changed, 43 insertions, 15 deletions
diff --git a/README.rst b/README.rst
index 77f0ec3..3cfcc21 100644
--- a/README.rst
+++ b/README.rst
@@ -20,6 +20,12 @@ performance::
make perf-little # runs httperf against the server, (less requests).
make perf-easy # runs httperf against a no-cpu load.
+If you want to modify the cpu load, you can pass the FIB parameter as an
+environment variable::
+ FIB=20 make inline-server
+ curl localhost:8080/
+ $ answer is >>> 6765
+
Analysis
---------------
diff --git a/server.py b/server.py
index 240de67..4afa31b 100644
--- a/server.py
+++ b/server.py
@@ -1,11 +1,17 @@
+import os
from klein import run, route
+import tasks
-from tasks import fib
+FIB = os.environ.get('FIB', tasks.FIB_DEFAULT)
@route('/')
def home(request):
- return 'answer is >> %s' % fib(30)
+ return 'answer is >>> %s\n' % tasks.fib(FIB)
+
+@route('/hi')
+def ping(request):
+ return 'easy!'
if __name__ == "__main__":
run("localhost", 8080)
diff --git a/server2.py b/server2.py
index 5f9c32e..268c7c5 100644
--- a/server2.py
+++ b/server2.py
@@ -1,14 +1,20 @@
+import os
from klein import run, route
from twisted.internet.threads import deferToThread
+import tasks
-from tasks import fib
+FIB = os.environ.get('FIB', tasks.FIB_DEFAULT)
@route('/')
def home(request):
- d = deferToThread(fib, 30)
- d.addCallback(lambda result: 'answer is >> %s' % result)
+ d = deferToThread(tasks.fib, FIB)
+ d.addCallback(lambda result: 'answer is >>> %s\n' % result)
return d
+@route('/hi')
+def ping(request):
+ return 'easy!'
+
if __name__ == "__main__":
run("localhost", 8080)
diff --git a/server3.py b/server3.py
index e5127dc..f0a44cd 100644
--- a/server3.py
+++ b/server3.py
@@ -1,23 +1,24 @@
+import os
+import sys
from klein import run, route
from twisted.internet import defer
from twisted.internet import reactor
+from twisted.python import log
from ampoule import pool
import tasks
-import sys
-from twisted.python import log
-
log.startLogging(sys.stdout)
+FIB = os.environ.get('FIB', tasks.FIB_DEFAULT)
+
@route('/')
def home(request):
-
- d = pp.doWork(tasks.Fib)
- d.addCallback(lambda res: str(res['fib']))
+ d = pp.doWork(tasks.Fib, n=int(FIB))
+ d.addCallback(lambda res: 'answer is >>> {r}\n'.format(r=res['fib']))
return d
@route('/hi')
diff --git a/tasks.py b/tasks.py
index 737f540..3f8b85d 100644
--- a/tasks.py
+++ b/tasks.py
@@ -1,20 +1,29 @@
+import os
from twisted.protocols import amp
from ampoule import child
+FIB_DEFAULT = 30
+
def fib(n):
+ '''very silly fibonacci function.
+ do not try to optimize this, the idea is to make your cpu suffer for a
+ while'''
+ n = int(n)
if n <= 2:
return 1
else:
return fib(n-1) + fib(n-2)
+# ampoule stuff
class Fib(amp.Command):
- response = [("fib", amp.Integer())]
+ arguments = [('n', amp.Integer())]
+ response = [('fib', amp.Integer())]
class FibCalculator(child.AMPChild):
@Fib.responder
- def fib(self):
- print 'called responder, fib...'
- return {"fib": fib(30)}
+ def fib(self, n):
+ #print "FIB FUNCTION CALLED WITH", n
+ return {"fib": fib(n)}