Вопрос чисто характера "как правильнее". Суть: Есть класс, в котором мне нужно использовать TelegramClient telethon'а. Но я не могу в одном потокке инициализировать его, а в другом потоке стартануть, так как даже если якобы использовать telethon.sync, всё равно он у себя получает loop и делает всё асинхронно. Получается надо либо инициализировать его в __init__ и передавать loop из первого потока во второй как аргументом функции, либо инициализировать и стартовать в одном, втором потоке, но пайчарм ругается на это, якобы всё надо инициализировать в __init__. 2 кода предоставил ниже.
Передача loop'а в другой потокimport asyncio
from threading import Thread
from telethon import TelegramClient
class Binance:
def __init__(self):
self.loop = asyncio.get_event_loop()
self.tg_client = TelegramClient('sess', api_id, api_hash)
def updating(self, loop):
asyncio.set_event_loop(loop)
self.tg_client.start(phone, password)
print('logged in')
binance = Binance()
updater = Thread(target=binance.updating, args=[binance.loop])
updater.start()
input()
Инициализация telethon-клиента в другом потокеimport asyncio
from threading import Thread
from telethon import TelegramClient
class Binance:
def __init__(self):
...
def updating(self):
asyncio.set_event_loop(asyncio.new_event_loop())
self.tg_client = TelegramClient('sess', api_id, api_hash) # вот здесь ругается пайчарм
self.tg_client.start(phone, password)
print('logged in')
binance = Binance()
updater = Thread(target=binance.updating)
updater.start()
input()