Лучшие практики хранения сосотояния приложения
В файле main.py у меня реализован класс Application, наследуемый от tornado.web.Application. В нём я храню соеденение с базой данных, redis и прочие постоянные вещи. И в переменную application записываю экземпляр этого класса.
Но, например, в файле base_mapper, который отвечает за запросы к базе данных приходится импортировать это таким образом:
import __main__
И потом получать коннект к базе данных так:
__main__.application.db
Всё это кажется мне не правильным. Но я закрывал глаза, пока не пришла очередь блокировок. Есть блокировки, которые необходимо использовать в разных файлах (но те же). Для начала я придумал просто новый файл locks.py, в котором просто иницилизировал эти блокировки и делаю импорт из этого файла там где нужно. Но опять же всё смахивает на плохой код. Есть ли какие-нибудь лучшие практики для этого именно для Python? Уместен ли здесь будет DI и как его лучше реализовать? Может есть способы более правильному обращения к главному объекту application и тогда в нём можно хранить все блокировки?