summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app.py28
-rw-r--r--requirements.txt2
2 files changed, 22 insertions, 8 deletions
diff --git a/app.py b/app.py
index 45e1295..ac84e0e 100644
--- a/app.py
+++ b/app.py
@@ -2,6 +2,7 @@ import json
from flask import Flask, request
from flask.ext import restful
+from flask.ext.cache import Cache
from flask.ext.restful import reqparse
from flask.ext.sqlalchemy import SQLAlchemy
@@ -12,6 +13,10 @@ from cors import crossdomain
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = environ.get('DATABASE_URL', 'postgres://localhost:5432/traces')
+cache = Cache(app, config={
+ 'CACHE_TYPE': 'redis',
+ 'CACHE_REDIS_URL': environ.get('REDISCLOUD_URL', 'redis://localhost')
+})
db = SQLAlchemy(app)
api = restful.Api(app)
@@ -33,19 +38,26 @@ class Trace(db.Model):
def __repr__(self):
return '{} {}'.format(self.id, self.page)
+@cache.memoize(timeout=60*2)
+def _get_page_traces(page=None, limit=3):
+ print 'hit'
+ traces = Trace.query
+ if page:
+ traces = traces.filter_by(page=page)
+ traces = traces.order_by(Trace.id.desc()).limit(limit)
+ return json.dumps([{
+ 'page': trace.page,
+ 'trace': json.loads(trace.trace)
+ } for trace in traces])
+
class Traces(restful.Resource):
@crossdomain(origin='*')
def get(self):
args = trace_parser.parse_args()
- traces = Trace.query
- if 'page' in request.args:
- traces = traces.filter_by(page=request.args['page'])
- traces = traces.order_by(Trace.id.desc()).limit(int(request.args.get('limit', '3')))
- return json.dumps([{
- 'page': trace.page,
- 'trace': json.loads(trace.trace)
- } for trace in traces])
+ page = request.args.get('page')
+ limit = int(request.args.get('limit', '3'))
+ return _get_page_traces(page, limit)
@crossdomain(origin='*')
def post(self):
diff --git a/requirements.txt b/requirements.txt
index 2429179..060bcdd 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,4 +1,5 @@
Flask==0.10.1
+Flask-Cache==0.12
Flask-RESTful==0.2.5
Flask-SQLAlchemy==1.0
Jinja2==2.7.1
@@ -8,5 +9,6 @@ Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
psycopg2==2.5.1
+redis==2.8.0
six==1.4.1
wsgiref==0.1.2