From ce4cb42cb521260e2f7091dd80b136320f32663f Mon Sep 17 00:00:00 2001 From: "Kali Kaneko (leap communications)" Date: Thu, 31 Mar 2016 21:54:49 -0400 Subject: pass FIB parameter as environment variable --- README.rst | 6 ++++++ server.py | 10 ++++++++-- server2.py | 12 +++++++++--- server3.py | 13 +++++++------ tasks.py | 17 +++++++++++++---- 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)} -- cgit v1.2.3