diff --git a/contrib/src/web/faces.py b/contrib/src/web/faces.py
index 0f3e0ac8f0cca1d95c6c4a999f1aab0184971463..f69e92d947ac55bd0631a91f44661864d73d003f 100644
--- a/contrib/src/web/faces.py
+++ b/contrib/src/web/faces.py
@@ -79,12 +79,13 @@ cleaner = FileCleaner()
 @app.before_request
 def before_request():
     g.db = database
-    g.db.connect()
+    if g.db.is_closed():
+        g.db.connect()
 
-@app.after_request
-def after_request(response):
-    g.db.close()
-    return response
+@app.teardown_request
+def teardown_request(exc):
+    if not g.db.is_closed():
+        g.db.close()
 
 @app.route('/')
 def index():