diff options
Diffstat (limited to 'python/task_server/rest.py')
| -rw-r--r-- | python/task_server/rest.py | 57 |
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' |
