Files
weave-scope/experimental/example/pyapp/app.py
2015-05-27 16:06:04 +00:00

49 lines
1.1 KiB
Python

import os
import socket
import requests
import random
import threading
from concurrent.futures import ThreadPoolExecutor
from flask import Flask
from redis import Redis
app = Flask(__name__)
redis = Redis(host='redis', port=6379)
pool = ThreadPoolExecutor(max_workers=10)
sessions = threading.local()
goapps = ['http://goapp1:8080/', 'http://goapp2:8080/']
def do_redis():
redis.incr('hits')
return redis.get('hits')
def do_qotd():
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.connect(("qotd", 4446))
s.send("Hello")
return s.recv(1024)
finally:
s.close()
def do_search():
if getattr(sessions, 'session', None) == None:
sessions.session = requests.Session()
r = sessions.session.get(random.choice(goapps))
return r.text
@app.route('/')
def hello():
counter_future = pool.submit(do_redis)
search_future = pool.submit(do_search)
qotd_future = pool.submit(do_qotd)
result = 'Hello World! I have been seen %s times.' % counter_future.result()
result += search_future.result()
result += qotd_future.result()
return result
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000, debug=True)