summaryrefslogtreecommitdiff
path: root/api.py
diff options
context:
space:
mode:
authorschneefux <schneefux+commit@schneefux.xyz>2017-03-26 21:49:39 +0200
committerschneefux <schneefux+commit@schneefux.xyz>2017-03-26 21:49:39 +0200
commitf2f0fc19f4171c44a7e6bd5b724c3f31a78e6283 (patch)
treec3eb6fb71b0bc5cceaaa0d19ab0477418c7c1b4e /api.py
parent1dc4a94a2690110bfb12ea939119a5eb9f005de5 (diff)
downloadminionlivesmatter-f2f0fc19f4171c44a7e6bd5b724c3f31a78e6283.tar.gz
minionlivesmatter-f2f0fc19f4171c44a7e6bd5b724c3f31a78e6283.zip
spawn a thread for calculations
Diffstat (limited to 'api.py')
-rw-r--r--api.py13
1 files changed, 11 insertions, 2 deletions
diff --git a/api.py b/api.py
index 08f95a9..361531d 100644
--- a/api.py
+++ b/api.py
@@ -1,7 +1,9 @@
#!/usr/bin/python3
import os
+import logging
import psycopg2
+from threading import Thread
from flask import Flask, g, render_template, send_from_directory
from werkzeug.contrib.cache import SimpleCache
@@ -19,6 +21,7 @@ db_config = {
data = {}
def update_vals():
+ logging.warning("updating fun stats")
con = psycopg2.connect(**db_config)
c = con.cursor()
@@ -26,21 +29,26 @@ def update_vals():
c.execute(query)
return c.fetchone()[0]
+ logging.warning("calculating…")
data["turrets_rebuilt"] = sql_val("SELECT SUM(turret_kills) FROM participant WHERE created_at > NOW() - '1 day'::INTERVAL")
data["minions_for_nothing"] = sql_val("SELECT SUM(minion_kills) FROM participant WHERE NOT winner AND created_at > NOW() - '1 day'::INTERVAL")
data["minions_total"] = sql_val("SELECT SUM(minion_kills) FROM participant WHERE created_at > NOW() - '1 day'::INTERVAL")
data["fountains_wasted"] = sql_val("SELECT COUNT((item_grants->>'*1045_Item_FountainOfRenewal*')::INT)-COUNT((item_uses->>'*1045_Item_FountainOfRenewal*')::INT) FROM participant WHERE created_at > NOW() - '1 day'::INTERVAL")
+ logging.warning("calculating more…")
data["crystal_sentries"] = sql_val("SELECT SUM(participant.crystal_mine_captures) FROM participant WHERE participant.created_at > NOW() - '1 day'::INTERVAL")
data["flares_sold"] = sql_val("SELECT SUM((participant.item_sells->>'*1038_Item_Flare*')::INT) FROM participant WHERE participant.created_at > NOW() - '1 day'::INTERVAL")
data["minions_per_kraken"] = sql_val("SELECT (SUM(match.duration)/60*5) / SUM(roster.kraken_captures) FROM match JOIN roster ON roster.match_api_id=match.api_id WHERE match.created_at > NOW() - '1 day'::INTERVAL")
data["minion_candies"] = sql_val("SELECT SUM((item_uses->>'*1041_Item_MinionCandy*')::INT) FROM participant WHERE created_at > NOW() - '1 day'::INTERVAL")
+ logging.warning("still calculating…")
data["infusions_secs"] = sql_val("SELECT (24*60*60) / (SUM((participant.item_uses->>'*1052_Item_WeaponInfusion*')::INT) + SUM((participant.item_uses->>'*1053_Item_CrystalInfusion*')::INT))::FLOAT FROM participant JOIN roster ON participant.roster_api_id=roster.api_id JOIN match ON roster.match_api_id=match.api_id WHERE participant.created_at > NOW() - '1 day'::INTERVAL")
data["scout_traps"] = sql_val("SELECT SUM((item_uses->>'*1054_Item_ScoutTrap*')::INT) FROM participant WHERE participant.created_at > NOW() - '1 day'::INTERVAL")
data["saw_turrets"] = sql_val("SELECT SUM(turret_kills) FROM participant WHERE hero='*SAW*' AND created_at > NOW() - '1 day'::INTERVAL")
data["matches"] = sql_val("SELECT COUNT(*) FROM match WHERE created_at > NOW() - '1 day'::INTERVAL")
+ logging.warning("still calculating more…")
data["minions_min"] = sql_val("SELECT SUM(minion_kills)/(24*60*60)::FLOAT FROM participant WHERE participant.created_at > NOW() - '1 day'::INTERVAL")
data["vox_minionkills"] = sql_val("SELECT SUM(minion_kills) FROM participant WHERE hero='*Vox*' AND created_at > NOW() - '1 day'::INTERVAL")
data["minionfeet"] = sql_val("SELECT SUM((item_grants->>'*1080_Item_MinionsFoot*')::INT) FROM participant WHERE created_at > NOW() - '1 day'::INTERVAL")
+ logging.warning("calculations done.")
c.close()
@@ -49,8 +57,8 @@ def index():
return render_template("index.html", data=data)
@app.route("/update")
-def update():
- update_vals()
+def update_stats():
+ Thread(target=update_vals).start()
return render_template("index.html", data=data)
@app.route("/assets/<path:path>")
@@ -58,4 +66,5 @@ def send_assets(path):
return send_from_directory("templates/assets", path)
if __name__ == "__main__":
+ Thread(target=update_vals).start()
app.run(host="0.0.0.0", port=5000, debug=True)