Задать вопрос
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону

Как пофиксить RuntimeError: This event loop is already running?

Пытаюсь скачать видео с ТикТока. Использую TikTokApi.
Делаю все по докам, но выходит вот такой прикол
This event loop is already running
Traceback (most recent call last):
  File "D:\Programs\Python\Lib\site-packages\pyrogram\dispatcher.py", line 240, in handler_worker
    await handler.callback(self.client, *args)
  File "D:\codes\RimUserBot\userbot.py", line 50, in download
    with TikTokApi().api() as ttapi:
       ^^^^^^^^^^^
  File "D:\Programs\Python\Lib\site-packages\TikTokApi\tiktok.py", line 159, in __init__
    self._initialize(
  File "D:\Programs\Python\Lib\site-packages\TikTokApi\tiktok.py", line 205, in _initialize
    self._browser = asyncio.get_event_loop().run_until_complete(
                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "D:\Programs\Python\Lib\asyncio\base_events.py", line 629, in run_until_complete
    self._check_running()
  File "D:\Programs\Python\Lib\asyncio\base_events.py", line 588, in _check_running
    raise RuntimeError('This event loop is already running')
RuntimeError: This event loop is already running

код
from TikTokApi import TikTokApi
# код с юзерботом вырезан
with TikTokApi() as ttapi: # ошибка тут
            video = ttapi.video(url=url)
            await app.send_video(msg.chat.id, video.bytes())

пробовал без with
ttapi = TikTokApi()
...
то же самое.
либо обновлял. Больше ничего не запущено. Ссылка действительная. Пробовал TikTokApi().api() - то же самое
как пофиксить?
  • Вопрос задан
  • 3716 просмотров
Подписаться 1 Простой 2 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Академия Эдюсон
    Python-разработчик
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Python-разработчик + ИИ
    8 месяцев
    Далее
Решения вопроса 1
Vindicar
@Vindicar
RTFM!
Разработчик - идиот и не подумал, что его код может вызываться в асинхронной программе. Либа валится не только в асинхронной программе, но и в Jupyter Notebook, и в Google Collab, потому что и тот и тот по природе асинхронные. Фикс обещается с прошлого мая, а воз и ныне там.
Но на гитхабе описан костыль с пакетом nest-asyncio. Попробуй его. Просто поставь пакет и добавь в начало кода бота:
import nest_asyncio
nest_asyncio.apply()

С моей точки зрения это грязнущщий хак, но всё же лучше чем ничего.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
ITK academy Краснодар
от 220 000 до 300 000 ₽
ITK academy Краснодар
от 75 000 ₽
DimaTech Ltd Краснодар
от 140 000 до 140 000 ₽