как сделать так, чтобы при запуске main функция вызвана была всего один раз

Рейтинг: 0Ответов: 1Опубликовано: 09.07.2023

Мне нужно сделать так, чтобы при запуске функции, запускались вебхуки и сохранили данные. То и есть данные на один запуск. Бот телеграм пишу. Чтобы не тратить ресурсы, пользователи много раз будут узнала цену на товар. Поэтому нужно, чтобы один раз все нашлось и хранилось в памяти.

Я отправляю вебхуки на сайт, их три и они проходят через функции

def get_access_token():
    # отправка и получение данных вебхука
    return token
def get_point_list():
    # отправка и получение данных вебхука
    return response
def get_price_list():
    # отправка и получение данных вебхука
    return response

Я делал вызов этих функции после

if __name__ == '__main__':

но без результата. Мозг ломал целый день, закидывал это в файл, потом импортировал, но без успеха.

if __name__ == "__main__":
    company_token = get_access_token()
    company_point = get_point_list()
    company_price = get_price_list()

Все переменные с company должны использоваться в main и должны созданы в начале кода. Код имеет асинхронный api. Также переменные company словари.

И второй вопрос: я принтую, например company_token, в конце кода и он не выводиться, почему так происходит?

Ответы

▲ 0

Попробуй сделать это с помощью класса.Тогда у тебя переменные буду получать значения при инициализации класса и это будет случаться только один раз, при запуске программы(при условии, что класс ты больше нигде инициализировать не будешь)

class <Имя класса>:
       def __init__(self):
              self.company_token = get_access_token()
              self.company_point = get_point_list()
              self.company_price = get_price_list()
if __name__ == "__main__":
    a = <Имя класса>()

По второму вопросу - хотелось бы конкретно увидеть что и где принтуешь, мб переменная пустая