@maqstein
Python developer

Какая должна быть архитектура проекта телеграм бота?

пишу бота в телегу
хочу сделать такую архитектуру
5da336b71d40e629338801.png
для работы хэндлеров нужен объект клиента, который находится в connections.
но проблема в том что при импорте объекта "клиент" в хэндлерах, каждый раз создается инстанс клиента и из за этого выкидывается ошибка (клиент может быть только один).

каким образом можно импортить объект чтоб он не создавался каждый раз?

потому что все пихать в один файл это не есть хорошо
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ответы на вопрос 1
@luchanos
Создай какой-нибудь класс, обзови Resources например, и пропиши там всё то, что тебе надо будет использовать в твоём проекте - клиенты к БД, очередям и прочую пижню в виде его атрибутов. При поднятии твоего приложения создавай экземпляр этого класса и импортируй его по всем модулям, прокидывай в нужные хэндлеры - получится ты всё один раз себе насоздавал и теперь просто юзаешь.

Короче что-то вроде такого:
делаешь класс ресурсов:
class Resources:
def __init__(self, tg_client):
self.tg_client = tg_client

при поднятии приложения создаешь его экземпляр и прокидываешь свой tg_client:
resources = Resources(tg_client=tg_client)

а дальше в любом другом модуле с хэндлером просто import resources (импортируешь этот экземпляр) и юзаешь в хэндлере через обращение к полю resources.tg_client (аналогично можно сделать клиент для БД, очередей и всего остального)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы