проблема в том, что код, который содержит основную логику приложения, и который управляет описанными выше классами по-моему в принципе не может подчиняться принципу единой ответственности - то есть решать одну задачу.
вот посмотрите пожалуйста как выглядит мой код с основной логикой приложения:
#!/usr/bin/env python3 import config from parser import Parser from db_connection import DB_connection from logger import Logger if __name__ == '__main__': logger = Logger() with DB_connection(config.dbname, config.user, config.password, config.host, logger) as db_connection: try: db_cursor = db_connection.cursor() except Exception as e: msg = 'Database ' + str(config.dbname) + ' connection is failed ' + str(e) logger.write_to_log(msg) try: parser = Parser(config.headers, logger) html = parser.get_page_html(config.url) links_to_inner = parser.get_links_to_inner(html) except Exception as e: msg = 'Parse operations for ' + str(config.url) + ' is failed ' + str(e) logger.write_to_log(msg) if links_to_inner: for link in links_to_inner: html = parser.get_page_html(link) content_page_inner = parser.get_content_page_inner(html) try: req = 'INSERT INTO parse_results2 (public_date, position, company, pay, description) VALUES (%s,%s,%s,%s,%s)' vals = ( content_page_inner['public_date'], content_page_inner['position'], content_page_inner['company'], content_page_inner['pay'], content_page_inner['desc'] ) db_cursor.execute(req, vals); except Exception as e: msg = 'Write to table is failed: ' + str(e) logger.write_to_log(msg) if 'db_cursor' in dir(): db_cursor.close()
код отдельных классов не привожу потому что они не имеют отношения к вопросу. но если интересно, то репозиторий здесь