summaryrefslogtreecommitdiff
path: root/server3.py
blob: 8841c14f8aa7da248361bbbca05e5e4ef6e247c4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
from klein import run, route

from twisted.internet.threads import deferToThread
from twisted.protocols import amp
from twisted.internet import reactor

from ampoule import child, pool

import sys
from twisted.python import log
log.startLogging(sys.stdout)

def fib(n):
    if n <= 2:
        return 1
    else:
        return fib(n-1) + fib(n-2)


class Fib(amp.Command):
    response = [('total', amp.Integer())]

class DelayedFib(amp.AMP):
    def slowFib(self):
        result = fib(25)
        return result
    Fib.responder(slowFib)

@route('/')
def home(request):
    d = pp.doWork(Fib)
    return d


pp = None

def start_pool():
    global pp
    pp = pool.ProcessPool(child.AMPChild, recycleAfter=5000)
    pp.min = 1
    pp.max = 5
    pp.start()


if __name__ == "__main__":
    reactor.callWhenRunning(start_pool)
    run("localhost", 8080)