diff --git a/app/zoom.py b/app/zoom.py index 2970535d3dd89154ed95ed1f8cdf3e921663e0f6..41d611fcbda67b5585513f0dfb2d5ef7cf74354a 100644 --- a/app/zoom.py +++ b/app/zoom.py @@ -1,5 +1,5 @@ import json -from flask import Flask, render_template, request, g +from flask import Flask, render_template, request, g, request_tearing_down import psycopg2 import psycopg2.extras import time @@ -42,6 +42,17 @@ def db_query(query, args=()): db_connect() db.execute(query, args) +def db_reset_signal(sender, **extra): + # At the end of every request, we have to close the implicitly opened + # transaction. Otherwise we end up with serving stale data. + if db_connection is not None: + try: + db_connection.rollback() + except: + pass + +request_tearing_down.connect(db_reset_signal, app) + ### Schedule ### def get_date(): diff --git a/requirements.txt b/requirements.txt index 6e41d4050c28b722c2a96e4f228b8d3d1ccfc835..df5d5e7931e3039468c990c89a51d808cf8f9283 100644 --- a/requirements.txt +++ b/requirements.txt @@ -2,3 +2,4 @@ zoomus psycopg2 python-dateutil Flask +blinker