@utsiye

Как запустить список клиентов telethon одновременно?

У меня есть список готовых клиентов telethon, как их включить одновременно и оставить включенными?
Вот что я попытался сделать, но выдает ошибку:
async def main():
            global all_apps
            global started

            loop = asyncio.get_event_loop()

            tasks = []
            for app in all_apps:
                loop = asyncio.new_event_loop()
                asyncio.set_event_loop(loop)
                task = loop.create_task(await app.start())
                tasks.append(task)
                started += 1

            print(f'БЫЛО ЗАПУЩЕНО {started} АКК.')
            await asyncio.gather(*tasks)



        asyncio.run(main())


Ошибка:
Fatal error handling updates (this is a bug in Telethon, please report it)
Traceback (most recent call last):
  File "C:\Users\gelse\PycharmProjectsd\pyrogram_chatgpt\venv\lib\site-packages\telethon\client\updates.py", line 404, in _update_loop
    updates = await asyncio.wait_for(self._updates_queue.get(), deadline_delay)
  File "C:\Users\gelse\AppData\Local\Programs\Python\Python310\lib\asyncio\tasks.py", line 445, in wait_for
    return fut.result()
  File "C:\Users\gelse\AppData\Local\Programs\Python\Python310\lib\asyncio\queues.py", line 156, in get
    getter = self._get_loop().create_future()
  File "C:\Users\gelse\AppData\Local\Programs\Python\Python310\lib\asyncio\mixins.py", line 30, in _get_loop
    raise RuntimeError(f'{self!r} is bound to a different event loop')
RuntimeError: <Queue at 0x2c36cf80ee0 maxsize=0> is bound to a different event loop
  • Вопрос задан
  • 231 просмотр
Пригласить эксперта
Ответы на вопрос 2
fenrir1121
@fenrir1121
Начни с документации
Что по вашему делает этот код? И что он должен делать?
loop = asyncio.get_event_loop()
            for app in all_apps:
                loop = asyncio.new_event_loop()
                asyncio.set_event_loop(loop)

В создание таски передается awaitable объект, а не его результат (которого никогда не будет)
task = loop.create_task(app.start())
Ответ написан
@utsiye Автор вопроса
Получилось, после перебора методов. Вот:
loop = asyncio.get_event_loop()
for app in all_apps:
    app.start()
loop.run_forever()


Каждый элемент в all_apps - клиент. Например, если создать клиент teletho.TelegramClient и добавить его в лист.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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