mirror of
https://github.com/weaveworks/scope.git
synced 2026-05-05 08:48:51 +00:00
Update demo for tracer
This commit is contained in:
8
experimental/example/trace_app/Dockerfile
Normal file
8
experimental/example/trace_app/Dockerfile
Normal file
@@ -0,0 +1,8 @@
|
||||
FROM python:2.7
|
||||
MAINTAINER Weaveworks Inc <help@weave.works>
|
||||
WORKDIR /home/weave
|
||||
ADD requirements.txt /home/weave/
|
||||
RUN pip install -r /home/weave/requirements.txt
|
||||
ADD app.py /home/weave/
|
||||
EXPOSE 5000
|
||||
ENTRYPOINT ["python", "/home/weave/app.py"]
|
||||
69
experimental/example/trace_app/app.py
Normal file
69
experimental/example/trace_app/app.py
Normal file
@@ -0,0 +1,69 @@
|
||||
import os
|
||||
import socket
|
||||
import sys
|
||||
import requests
|
||||
import random
|
||||
import threading
|
||||
import logging
|
||||
|
||||
from concurrent.futures import ThreadPoolExecutor
|
||||
from flask import Flask
|
||||
from redis import Redis
|
||||
from werkzeug.serving import WSGIRequestHandler
|
||||
|
||||
app = Flask(__name__)
|
||||
redis = Redis(host='redis', port=6379)
|
||||
pool = ThreadPoolExecutor(max_workers=10)
|
||||
sessions = threading.local()
|
||||
|
||||
searchapps = ['http://searchapp: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(searchapps))
|
||||
return r.text
|
||||
|
||||
def do_echo(text):
|
||||
r = requests.get("http://echo/", data=text)
|
||||
return r.text
|
||||
|
||||
def ignore_error(f):
|
||||
try:
|
||||
return str(f())
|
||||
except:
|
||||
logging.error("Error executing function", exc_info=sys.exc_info())
|
||||
return "Error"
|
||||
|
||||
# this root is for the tracing demo
|
||||
@app.route('/hello')
|
||||
def hello():
|
||||
qotd_msg = do_qotd()
|
||||
qotd_msg = do_echo(qotd_msg)
|
||||
return qotd_msg
|
||||
|
||||
# this is for normal demos
|
||||
@app.route('/')
|
||||
def root():
|
||||
#counter_future = pool.submit(do_redis)
|
||||
#search_future = pool.submit(do_search)
|
||||
result = do_echo(do_qotd())
|
||||
return result
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(format='%(asctime)s %(levelname)s %(filename)s:%(lineno)d - %(message)s', level=logging.INFO)
|
||||
WSGIRequestHandler.protocol_version = "HTTP/1.1"
|
||||
app.run(host="0.0.0.0", port=80, debug=True)
|
||||
4
experimental/example/trace_app/requirements.txt
Normal file
4
experimental/example/trace_app/requirements.txt
Normal file
@@ -0,0 +1,4 @@
|
||||
flask
|
||||
redis
|
||||
requests
|
||||
futures
|
||||
Reference in New Issue
Block a user