@light___soul
Full Stack Middle Web Developer

Как хранить Telegram (telethon) сессию в глобальной переменной на Flask — uwsqi проекте?

Сейчас telegram client хранится в глобальной переменной и при работе с одним процессом все работает.
При запуске через uWSGI при 10-ти воркерах это глобальная переменная остается только в одном из них.
Как правильно сделать, чтобы переменная с сессией была доступна на всех воркерах?

Пример получения клиента

from telethon.sync import TelegramClient


api_id = None
api_hash = None
username = None


client = None
started = False


def startTelegram():
    global started
    if started:
        return
    global api_id
    global api_hash
    global username

    config = configparser.ConfigParser()
    dir = os.path.dirname(os.path.abspath(__file__))
    config.read(dir + "/config.ini")
    api_id = int(config['Telegram']['api_id'])
    api_hash = config['Telegram']['api_hash']
    username = config['Telegram']['username']

    async def __start():
        global client
        global started
        client = TelegramClient(username, api_id, api_hash)
        client.start()
        started = True

    loop = asyncio.new_event_loop()
    asyncio.set_event_loop(loop)
    loop.run_until_complete(__start())

  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 1
@bacon
Убери global. Можно просто внутри __start считать свой конфиг, а можно на самом верхнем уровне проинициализировать api_id и прочие нужными данными из конфига, не присваивать ему None.
Ответ написан
Ваш ответ на вопрос

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

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