From 01fa63f916f7c647066e03e0d0270ab05b910b4a Mon Sep 17 00:00:00 2001 From: "Phyks (Lucas Verney)" Date: Wed, 27 Jun 2018 22:11:30 +0200 Subject: [PATCH] Fix an issue with MySQL dropping connection after some time --- server/__main__.py | 2 ++ server/models.py | 12 ++++++++++++ 2 files changed, 14 insertions(+) diff --git a/server/__main__.py b/server/__main__.py index e9bd537..8f2404f 100644 --- a/server/__main__.py +++ b/server/__main__.py @@ -14,6 +14,8 @@ from server.models import db, Report def init(): db.connect() db.create_tables([Report]) + if not db.is_closed(): + db.close() # Use DateAwareJSONEncoder to dump JSON strings # From http://stackoverflow.com/questions/21282040/bottle-framework-how-to-return-datetime-in-json-response#comment55718456_21282666. pylint: disable=locally-disabled,line-too-long diff --git a/server/models.py b/server/models.py index c313b58..d41b4a2 100644 --- a/server/models.py +++ b/server/models.py @@ -6,6 +6,7 @@ Models and database definition import os import arrow +import bottle import peewee from playhouse.db_url import connect from playhouse.shortcuts import model_to_dict @@ -13,6 +14,17 @@ from playhouse.shortcuts import model_to_dict db = connect(os.environ.get('DATABASE', 'sqlite:///reports.db')) +@bottle.hook('before_request') +def _connect_db(): + db.connect() + + +@bottle.hook('after_request') +def _close_db(): + if not db.is_closed(): + db.close() + + class BaseModel(peewee.Model): """ Common base class for all models