diff options
| author | Yuval Adam <yuv.adm@gmail.com> | 2013-12-18 16:24:44 +0200 |
|---|---|---|
| committer | Yuval Adam <yuv.adm@gmail.com> | 2013-12-18 16:24:44 +0200 |
| commit | 03ba71d21ffa84c1532c0a2b3444604650f90a36 (patch) | |
| tree | 5706e18d035fd501a15351eea838145150fe3dde /app.py | |
| parent | 6c04c157be06c9b48c357267b777dec864179893 (diff) | |
Diffstat (limited to 'app.py')
| -rw-r--r-- | app.py | 28 |
1 files changed, 20 insertions, 8 deletions
@@ -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): |
