From d5d2d2149b5139e3fb3be2b3b95c8bb5cab27c25 Mon Sep 17 00:00:00 2001 From: Alan Orth Date: Sat, 10 Nov 2018 23:58:58 +0200 Subject: [PATCH] dspace_statistics_api/database.py: Raise HTTP 500 on error Properly except on database connection error and raise an HTTP 500 instead of spamming the console/log with twenty lines of text. --- dspace_statistics_api/database.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/dspace_statistics_api/database.py b/dspace_statistics_api/database.py index d240757..cb8640e 100644 --- a/dspace_statistics_api/database.py +++ b/dspace_statistics_api/database.py @@ -3,6 +3,7 @@ from .config import DATABASE_USER from .config import DATABASE_PASS from .config import DATABASE_HOST from .config import DATABASE_PORT +import falcon import psycopg2 import psycopg2.extras @@ -14,7 +15,13 @@ class DatabaseManager(): self._connection_uri = 'dbname={} user={} password={} host={} port={}'.format(DATABASE_NAME, DATABASE_USER, DATABASE_PASS, DATABASE_HOST, DATABASE_PORT) def __enter__(self): - self._connection = psycopg2.connect(self._connection_uri, cursor_factory=psycopg2.extras.DictCursor) + try: + self._connection = psycopg2.connect(self._connection_uri, cursor_factory=psycopg2.extras.DictCursor) + except psycopg2.OperationalError: + title = '500 Internal Server Error' + description = 'Could not connect to database' + raise falcon.HTTPInternalServerError(title, description) + return self._connection def __exit__(self, exc_type, exc_value, exc_traceback):