aboutsummaryrefslogtreecommitdiffstats
path: root/python/task_server/rest.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/task_server/rest.py')
-rw-r--r--python/task_server/rest.py57
1 files changed, 57 insertions, 0 deletions
diff --git a/python/task_server/rest.py b/python/task_server/rest.py
new file mode 100644
index 00000000..3acb6920
--- /dev/null
+++ b/python/task_server/rest.py
@@ -0,0 +1,57 @@
+import psycopg2
+from psycopg2.extras import DictCursor
+import datetime, redis
+from intex.load_intex_collateral import intex_data
+#from ..globeop import download_data
+from task_server import app
+from flask import request, g
+import json
+
+def get_db():
+ db = getattr(g, 'db', None)
+ if db is None:
+ db = g.db = psycopg2.connect(database="ET",
+ user="et_user",
+ host="debian",
+ cursor_factory=DictCursor)
+ return db
+
+def get_queue():
+ q = getattr(g, 'queue', None)
+ if q is None:
+ q = g.queue = redis.Redis(unix_socket_path='/var/run/redis/redis.sock')
+ return q
+
+@app.teardown_appcontext
+def close_db(error):
+ """Closes the database again at the end of the request."""
+ db = getattr(g, 'db', None)
+ if db:
+ db.close()
+
+@app.route('/insert_intex_data')
+def intex():
+ db = get_db()
+ intex_data(db, request.args.get('workdate', str(datetime.date.today())))
+ return 'OK'
+
+@app.route('/globeop', methods=['PUT'])
+def globeop():
+ download_data(request.args.get('workdate', datetime.date.today(), lambda s: datetime.datetime.
+ strptime(s, "%Y-%m-%d").date()))
+ return 'OK'
+
+@app.route('/insert_quotes', methods=['PUT'])
+def insert_tranches():
+ insert_quotes(**request.args)
+ return 'OK'
+
+@app.route("/", methods=['POST'])
+def run_tasks():
+ workdate = str(datetime.date.today())
+ with get_queue().pipeline() as pipe:
+ for dealname, reinvflag in request.form.items():
+ pipe.rpush("tasks", json.dumps(("build_portfolio",
+ [workdate, dealname, reinvflag])))
+ pipe.execute()
+ return 'OK'