From 187723b567a9787f36ec251e00d73536b1825c0d Mon Sep 17 00:00:00 2001 From: Andrew Date: Tue, 23 Jul 2019 19:31:43 +0400 Subject: =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=20?= =?UTF-8?q?=D0=BC=D0=BE=D0=B4=D1=83=D0=BB=D1=8C=20=D0=BB=D0=BE=D0=B3=D0=B3?= =?UTF-8?q?=D0=B5=D1=80=D0=B0.=20=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=D1=8B=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D0=B8?= =?UTF-8?q?=20=D0=B2=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=D1=85=20=D1=82?= =?UTF-8?q?=D0=B8=D0=BF=D0=BE=D0=B2=20=D0=BF=D0=BE=D0=BB=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B1=D0=B0=D0=B7=D1=8B=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D1=85?= =?UTF-8?q?.=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D1=8B=20?= =?UTF-8?q?=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B4=D0=BB=D1=8F=20=D0=B8?= =?UTF-8?q?=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20Docker.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day9/task5_vue/backend/database/database.py | 34 +++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 7 deletions(-) (limited to 'day9/task5_vue/backend/database/database.py') diff --git a/day9/task5_vue/backend/database/database.py b/day9/task5_vue/backend/database/database.py index 87982cf..44554c7 100644 --- a/day9/task5_vue/backend/database/database.py +++ b/day9/task5_vue/backend/database/database.py @@ -1,27 +1,47 @@ from backend.database.wrappers import Wrapper, MySQLWrapper +from backend.logger import Logger -import logging +from time import sleep def initialize_databases(configs, schemes): + timeout = 5 + max_retries = 7 + for config in configs: if config['type'] == 'mysql': - logger = logging.getLogger('backendDebug') - - logger.debug('Connected') - logger.debug(f'Trying to connect to database "{config["db_name"]}@{config["host"]}"...') + for _ in range(max_retries): + try: + Logger.get_logger().info(f'Trying to connect to database "{config["db_name"]}@{config["host"]}"...') + wrapper = MySQLWrapper(config['host'], config['username'], config['password'], config['db_name']) + Logger.get_logger().info('Connected.') + break + except Exception as e: + Logger.get_logger().info(f'Connection failed. Reason: "{e}";\nTrying again...') + sleep(timeout) + else: + Logger.get_logger().critical( + f'Failed to connect to "{config["db_name"]}@{config["host"]}". ' + f'Check that database and then restart this service.' + ) + continue - wrapper = MySQLWrapper(config['host'], config['username'], config['password'], config['db_name']) wrappers[config['name']] = wrapper cursor = wrapper.connection.cursor() for scheme in schemes: - logger.debug(f'Preparing table "{scheme.meta["name"]}"...') + Logger.get_logger().info(f'Preparing table "{scheme.meta["name"]}"...') cursor.execute('START TRANSACTION; {} COMMIT;'.format(scheme.get_create_line())) wrapper.schemes[scheme.meta['name']] = scheme cursor.close() +def shutdown_databases(): + Logger.get_logger().info('Shutting down databases...') + for wrapper in wrappers: + wrapper.close_connection() + + def get_wrapper_for(database_name) -> Wrapper: return wrappers.get(database_name, None) -- cgit v1.2.3